首页 > 解决方案 > 覆盖在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 方法,但我需要在子类中将属性设置为不同的值。我该怎么做 ?请帮忙。

标签: pythonpython-3.xpropertiesgetter-settersetter

解决方案


正如评论中提到的,您的设置器的代码不正确。

这是一个有效的解决方案:

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

推荐阅读