在Python3中,从子类获取父类的属性

在Python3中,从子类获取父类的属性,python,python-3.x,class,inheritance,Python,Python 3.x,Class,Inheritance,我在Python3中有一些Parent和Clild类,其中有一些atributes,其中一个是另一个atributes之间的和 父类: class Parent: ATRIBUTE1 = 'dad' ATRIBUTE2 = ' good' ATRIBUTE3 = ATRIBUTE1 + ATRIBUTE2 儿童班: class Child(Parent): ATRIBUTE1 = 'son' ATRIBUTE2 = ' bad' 我只想继承子类中具有相

我在Python3中有一些Parent和Clild类,其中有一些atributes,其中一个是另一个atributes之间的和

父类:

class Parent:
    ATRIBUTE1 = 'dad'
    ATRIBUTE2 = ' good'
    ATRIBUTE3 = ATRIBUTE1 + ATRIBUTE2
儿童班:

class Child(Parent):
    ATRIBUTE1 = 'son'
    ATRIBUTE2 = ' bad'
我只想继承子类中具有相同属性的ATRIBUTE3

预期产出:

>> parent.ATRIBUTE3
'dad good'

>> child.ATRIBUTE3
'son bad'
你需要一个财产

class Parent:
    ATRIBUTE1 = 'dad'
    ATRIBUTE2 = ' good'

    @property
    def attribute3(self):
        return self.ATRIBUTE1 + self.ATRIBUTE2

现在
parent.attribute3
child.attribute3
将为您提供所需的结果。

attribute3
在类创建时进行评估,而不是在每次访问时重新计算。因此,您将继承父级的值,而不是公式

如果希望在每次访问时重新计算属性值,可以使用
@property

class Parent:
    ATRIBUTE1 = 'dad'
    ATRIBUTE2 = ' good'

    @property
    def ATRIBUTE3(self):
        return self.ATRIBUTE1 + self.ATRIBUTE2
您可以使用与以前相同的方式访问它(尽管是只读的):


但它不能作为类变量访问,即作为
Child.attribute3
print(child.ATTRIBUTE3)