重写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

相关内容

  • 没有找到相关文章

最新更新