python - 使用父类中的方法定义属性

标签 python inheritance properties

我有一个类,它定义了几个 setget 方法:

class MyClass(object):

    def __init__(self):
        pass

    def set_name(self, value):
        self._name = value

    def get_name(self):
        return self._name

我希望此类使用属性,但我不想更改它的代码(或添加任何内容)。所以我尝试像这样继承:

class Child(MyClass):

    name = property(get_name, set_name)

当我尝试导入 Child 时,出现 NameError:'get_name' 未定义。

我认为这是因为属性声明必须在 getset 方法之后

有没有办法在Child中执行此操作??

最佳答案

可以引用父类的方法:

class Child(MyClass):
    name = property(MyClass.get_name, MyClass.set_name)

在类定义“body”中,getter 和 setter 函数仍然是本地名称,因此您可以这样对它们进行寻址。但在子类中它们不再是本地的,因此您需要从类中检索它们。

关于python - 使用父类中的方法定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25200554/

相关文章:

python - 创建时填充参数的生成函数?

Python 正则表达式匹配 IP 地址与/CIDR

c# - Asp.NET MVC 5 中 Controller 的继承

c# - 使用数据表创建 ExpandoObject

java.util.logging.config

c# - 迭代对象列表并使用字符串获取元素属性

python - 生成假数据以填充数据库

Python:生成器失败

java - 在父类(super class)中声明子类并调用方法

asp.net-mvc - 如何在c#中查询类继承?