如果要在property
从对象X获得属性时触发描述符,则必须将描述符放入中type(X)
。因此,如果X是一个类,则描述符必须使用该类的类型,也称为该类的元类- 不涉及“特技”,这完全是一个通用规则。
或者,您可以编写自己的专用描述符。有关描述符的出色“操作方法”条约,请参见此处。 例如:
class classprop(object):
def __init__(self, f):
self.f = classmethod(f)
def __get__(self, *a):
return self.f.__get__(*a)()
class buh(object):
@classprop
def bah(cls): return 23
print buh.bah
23
根据需要发出。