Python中的描述器

描述器在Python中应用非常广泛。

Python方法(包括staticmethod()和classmethod())都实现为非数据描述器。因此,实例可以重新定义和覆盖方法,这允许单个实例获取与同一类的其他实例不同的行为。

property()函数实现为一个数据描述器。因此,实例不能覆盖属性的行为。例如:

练习:

1. 实现StaticMethod装饰器,完成staticmethod装饰器的功能。

2. 实现ClassMethod装饰器,完成classmethod装饰器的功能。

对类的实例属性name、age进行数据校验。

思路:    1. 写函数,在__init__中先检查,如果不合格直接抛异常

    2. 装饰器,使用inspect模块完成

    3. 描述器

 

posted @ 2017-11-20 19:36  thinkingjxj  阅读(1728)  评论(0编辑  收藏  举报