I am trying了解 Python 的描述符是什么以及它们的用途。我理解它们是如何工作的,但我有疑问。考虑以下代码:
class Celsius(object):
def __init__(self, value=0.0):
self.value = float(value)
def __get__(self, instance, owner):
return self.value
def __set__(self, instance, value):
self.value = float(value)
class Temperature(object):
celsius = Celsius()
为什么需要描述符类?
What is instance
and owner
这里? (在__get__
)。这些参数的目的是什么?
我将如何调用/使用这个例子?
Python 的描述符是这样的property
类型已实现。描述符简单地实现__get__
, __set__
等,然后添加到其定义中的另一个类中(就像上面对Temperature类所做的那样)。例如:
temp=Temperature()
temp.celsius #calls celsius.__get__
访问您将描述符分配给的属性(celsius
在上面的示例中)调用适当的描述符方法。
instance
in __get__
是类的实例(所以上面,__get__
会收到temp
, while owner
是具有描述符的类(所以它是Temperature
).
您需要使用描述符类来封装支持它的逻辑。这样,如果描述符用于缓存某些昂贵的操作(例如),它可以将值存储在其自身上而不是其类上。
Python 官方文档包括关于描述符的文章更详细地介绍了它们的工作原理,包括几个示例。
编辑:正如 jchl 在评论中指出的那样,如果您只是尝试Temperature.celsius
, instance
将None
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)