【问题标题】:Define a property using methods from the parent class使用父类中的方法定义属性
【发布时间】:2014-10-01 18:13:53
【问题描述】:

我有一个类,它定义了几个 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' is not defined。

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

Child 有没有办法做到这一点??

【问题讨论】:

    标签: python inheritance properties


    【解决方案1】:

    你可以引用父类上的方法:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多