python – 是否可以重写子类中属性的getter?
发布时间:2020-12-20 11:18:57 所属栏目:Python 来源:网络整理
导读:例如: class Example: def __init__(self): self.v = 0 @property def value(self): return self.v @value.setter def value(self,v): self.v = vclass SubExample(Example): pass 是否有可能只在SubExample中重写getter值? 解决方法 你可以这样做 class D
|
例如:
class Example:
def __init__(self):
self.v = 0
@property
def value(self):
return self.v
@value.setter
def value(self,v):
self.v = v
class SubExample(Example):
pass
是否有可能只在SubExample中重写getter值? 解决方法
你可以这样做
class DoubleExample(Example):
@Example.value.getter
def value(self):
return self.v * 2
o = Example()
o.value = 1
print o.value # prints "1"
p = DoubleExample()
p.value = 1
print p.value # prints "2"
但是,这仅适用于Example是一个新样式类(类Example(object):)而不是旧样式类(类Example :),因为它在您的示例代码中. 警告:Thomas在评论中指出,如果您使用多重继承(类Foo(Bar,Baz)),此方法可能无法按预期运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
