Python的属性装饰器不能按预期工作

Loc*_*cke 4 python properties class decorator new-style-class

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
Run Code Online (Sandbox Code Playgroud)

但它没有打印出"你变得愚蠢","你正在制造愚蠢的搞笑",......正如预期的那样.不知道为什么.亲爱的,你能让我弄清楚吗?

提前致谢!

ick*_*fay 15

property装饰只适用于新的样式类(也见).请Silly从扩展object明确,使之成为新式类.(在Python 3中,所有类都是新式类)

class Silly(object):
    @property
    def silly(self):
        # ...
    # ...
Run Code Online (Sandbox Code Playgroud)