描述符是如何实现
Python property类型的。描述符仅实现
__get__,
__set__等等,然后被添加到其定义中的另一个类中(就像你上面对
Temperature类所做的一样)。例如:
temp=Temperature()temp.celsius #calls celsius.__get__
访问你为描述符分配的属性(celsius在上面的示例中)调用适当的描述符方法。
instancein __get__是类的实例(因此,在上面,
__get__将接收temp,owner而是带有描述符的类(因此将是
Temperature)。
你需要使用描述符类来封装为其提供动力的逻辑。这样,如果描述符用于缓存某些昂贵的操作(例如),它可以将值存储在自身而不是其类上。
关于描述符的文章可以在这里找到。
编辑:正如
jchl在评论中指出的,如果你只是尝试
Temperature.celsius,
instance将是
None。



