覆盖 python 中没有 getter 或 setter 的 属性
overriding a property that has no getter or setter in python
我的代码:
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() ,而是使用在父级中设置的旧值。
在这里,父 class 没有特定的 setter 方法,但我需要在子 class 中将 属性 设置为不同的值。我该怎么做 ?请帮忙。
如评论中所述,您的 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
我的代码:
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() ,而是使用在父级中设置的旧值。
在这里,父 class 没有特定的 setter 方法,但我需要在子 class 中将 属性 设置为不同的值。我该怎么做 ?请帮忙。
如评论中所述,您的 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