【发布时间】:2019-07-28 18:40:36
【问题描述】:
class Base:
def __init__(self):
self._prop = None
pass
def get_prop(self):
print('base get prop')
return self._prop
def set_prop(self, prop):
print('base set prop')
self._prop = prop
prop = property(get_prop, set_prop)
pass
class Derived(Base):
def set_prop(self, prop):
print('Derived set prop')
self._prop = prop
pass
base = Base()
base.prop = 1
print(base.prop)
derive = Derived()
derive.prop = 1
print(derive.prop)
结果:
base set prop
base get prop
1
base set prop
base get prop
1
期待得到Derived set prop,因为我在派生类中重写了它。
当我用谷歌搜索它时,我看到了带有 @Base.prop.setter 的注释。我也试过了,但是没有用。我认为这是因为他们创建Base 的prop 的方式不同。
但在这种情况下,我无法轻松更新 Base 类。
一种方法是在Derive 类中完全重新实现prop,但我知道这不是正确的方法。还有其他方法吗?
【问题讨论】:
标签: python python-3.x inheritance properties