4
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

しかし、期待どおりに「あなたはばかげている」、「あなたはばかげている」などとは出力されません。理由がわからない。皆さん、私に理解してもらえますか?

前もって感謝します!

4

2 に答える 2

16

propertyデコレータは、新しいスタイルのクラスでのみ機能します(も参照)。明示的に継承Sillyobjectて新しいスタイルのクラスにします。(Python 3 では、すべてのクラスが新しいスタイルのクラスです)

class Silly(object):
    @property
    def silly(self):
        # ...
    # ...
于 2012-04-01T05:05:42.967 に答える