在property
从一类访问时(即,当描述符总是返回本身instance
是None
在它的__get__
方法)。
如果这不是您想要的,则可以编写一个始终使用类对象(owner
)而不是实例的新描述符:
>>> class classproperty(object):
... def __init__(self, getter):
... self.getter= getter
... def __get__(self, instance, owner):
... return self.getter(owner)
...
>>> class Foo(object):
... x= 4
... @classproperty
... def number(cls):
... return cls.x
...
>>> Foo().number
4
>>> Foo.number
4