Python中的描述器
描述器在Python中应用非常广泛。
Python方法(包括staticmethod()和classmethod())都实现为非数据描述器。因此,实例可以重新定义和覆盖方法,这允许单个实例获取与同一类的其他实例不同的行为。
property()函数实现为一个数据描述器。因此,实例不能覆盖属性的行为。例如:
练习:
1. 实现StaticMethod装饰器,完成staticmethod装饰器的功能。
2. 实现ClassMethod装饰器,完成classmethod装饰器的功能。
对类的实例属性name、age进行数据校验。
思路: 1. 写函数,在__init__中先检查,如果不合格直接抛异常
2. 装饰器,使用inspect模块完成
3. 描述器