如何解决覆盖在python中没有getter或setter的属性
我的代码:
class parent(object):
@property
def value(self):
return self.val
class child(parent):
#__init__
@parent.value.setter
def value(self):
return self.get_val()
此代码未将属性值设置为 self.get_val() ,而是使用在父级中设置的旧值。
此处,父类没有特定的 setter 方法,但我需要在子类中将该属性设置为不同的值。我该怎么做 ?请帮忙。
解决方法
如评论中所述,您的 setter 代码不正确。
这是一个有效的解决方案:
class Parent(object):
def __init__(self,val):
self.val = val
@property
def value(self):
return self.val
class Child(Parent):
@Parent.value.setter
def value(self,val):
self.val = val + " overridden"
parent = Parent("initial")
print(parent.value)
child = Child("initial")
print(child.value)
child.value = "new value"
print(child.value)
产生
initial
initial
new value overridden
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。