来自descriptor文档:
A descriptor can be called directly by its method name. For example,
d.__get__(obj)
.
以下类的示例是什么?
class Descriptor:
def __init__(self, color="red"):
self.color = color
例如,什么是d
,什么是obj
? "d.__get__(obj)"
将如何被上述类/实例调用?
最佳答案
工作示例
要使您的示例成为描述符,它需要有一个 __get__()方法:
class Descriptor:
def __init__(self, color="red"):
self.color = color
def __get__(self, obj, objtype=None):
return obj.size + ' ' + self.color
在另一个类中使用该描述符:
class A:
pair = Descriptor('green')
def __init__(self, size):
self.size = size
像这样调用描述符:
>>> a = A('big')
>>> a.pair
'big green'
希望这个工作示例对您有所帮助:-)
要点
1) 类是一个 descriptor if 定义了 __get__()、__set__() 或 __delete__() 中的任何一个。
2) 通过创建描述符的实例并将其作为类变量存储在另一个类中来使其工作。
3) 使用点运算符调用具有正常属性查找的描述符。
这就是它的全部:-)
关于Python 描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58478368/