描述符应用 -- 让python变成一个强类型的语言
生活随笔
收集整理的这篇文章主要介绍了
描述符应用 -- 让python变成一个强类型的语言
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
众所周知,python是一门弱类型的语言,变量可以随意赋值成任意类型,但是通过描述符,我们可以把数据变成强类型的。
我们为数据设置数据描述符,因为数据描述的优先级大于实例属性,所以在给数据赋值的时候会优先出发数据描述符。
普通版
class Typed:def __init__(self, name, expected_type):self.name = nameself.expected_type = expected_typedef __get__(self, instance, owner):if instance is None:return self # 如果实例化用People.name调用的话,就返回Typed的实例namereturn instance.__dict__[self.name]def __set__(self, instance, value):if not isinstance(value, self.expected_type):raise TypeError('Type error')instance.__dict__[self.name] = valuedef __delete__(self, instance):instance.__dict__.pop(self.name)class People:name = Typed('name', str)age = Typed('age', int)salary = Typed('salary', float)def __init__(self, name, age, salary):self.name = nameself.age = ageself.salary = salary# p1 = People(123, 18, 3333.3) # TypeError: Type error # p1=People('egon','18',3333.3) # TypeError: Type error # p1=People('egon',18,3333) # TypeError: Type error p1 = People('egon', 18, 3333.33) # 正确
用类的装饰器实现
先回顾一下setattr的语法
语法
setattr() 语法:
setattr(object, name, value)参数
- object -- 对象。
- name -- 字符串,对象属性。
- value -- 属性值。
转载于:https://www.cnblogs.com/lshedward/p/10415731.html
总结
以上是生活随笔为你收集整理的描述符应用 -- 让python变成一个强类型的语言的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Javag工程师成神之路(2019正式版
- 下一篇: python基础05