class Silly:
@property
def silly(self):
"This is a silly property"
print("You are getting silly")
return self._silly
@silly.setter
def silly(self, value):
print("You are making silly {}".format(value))
self._silly = value
@silly.deleter
def silly(self):
print("Whoah, you killed silly!")
del self._silly
s = Silly()
s.silly = "funny"
value = s.silly
del s.silly
但它不会像预期的那样打印“你越来越傻”、“你让傻很有趣”……。不知道为什么。伙计们,你能让我弄清楚吗?
提前致谢!
最佳答案
The property
decorator仅适用于 new-style classes (see also)。使 Silly
显式地从 object
扩展,使其成为一个新样式的类。 (在Python 3中,所有类都是新式类)
class Silly(object):
@property
def silly(self):
# ...
# ...
关于Python 的属性装饰器没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9962037/