从Python 3中的子级获取父类的属性

时间:2017-01-07 11:25:52

标签: python python-3.x class inheritance

我在Python 3中有一些带有一些属性的Parent和Clild类,其中一个属性是另一个属性之和。

父类:

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

儿童班:

class Child(Parent):
    ATRIBUTE1 = 'son'
    ATRIBUTE2 = ' bad'

我只想继承具有相同属性的Child Class中的ATRIBUTE3。

预期产出:

>> parent.ATRIBUTE3
'dad good'

>> child.ATRIBUTE3
'son bad'

2 个答案:

答案 0 :(得分:2)

你需要一个房产。

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

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

现在parent.attribute3child.attribute3会为您提供所需的结果。

答案 1 :(得分:1)

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

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

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

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

你可以像以前一样访问它(虽然只读):

print(child.ATTRIBUTE3)