[問題] property override的困擾

看板Python作者 (kent)時間8年前 (2015/08/19 11:07), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
最近在學習Python,碰到 setter 與 getter override的困擾 首先以下是 Parent 的設定 class Parent(): @property def foo(self): return self._bar @foo.setter def foo(self, foo): self._bar = foo 然後是繼承者Child class Child(Parent): def getFoo(self): return "Overrides:"+super().foo def setFoo(self, foo): self._bar = ' '.join(['Child\'s foo:', foo]) foo=property(getFoo,setFoo) 用以下程式測試 child = Child() child.foo="Hello World" print(child.foo) 取得預期的結果: Overrides:Child's foo: Hello World 以下只Override setter class Child(Parent): @Parent.foo.setter def foo(self, foo): self._bar = ' '.join(['Child\'s foo:', foo]) 或是只Override getter class Child(Parent): @Parent.foo.getter def foo(self): return "Override getter:"+self._bar 也都可以得到預期的結果 但是組合起來後 class Child(Parent): @Parent.foo.getter def foo(self): return "Override getter:"+self._bar @Parent.foo.setter def foo(self, foo): self._bar = ' '.join(['Child\'s foo:', foo]) 卻只得到 Child's foo: Hello World 有先進可以解惑嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.241.207 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1439953677.A.1AE.html
文章代碼(AID): #1Lq_CD6k (Python)
文章代碼(AID): #1Lq_CD6k (Python)