作者kentyeh (kent)
看板Python
标题[问题] property override的困扰
时间Wed Aug 19 11:07:55 2015
最近在学习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://webptt.com/cn.aspx?n=bbs/Python/M.1439953677.A.1AE.html