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

时间:2014-08-08 09:46:44

标签: 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 ??

中执行此操作

1 个答案:

答案 0 :(得分:2)

您可以在父类上引用方法:

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

在类定义'body'中,getter和setter函数仍然是本地名称,因此您可以这样解决它们。但是在子类中它们不再是本地的,所以你需要从类中检索它们。