我在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'
答案 0 :(得分:2)
你需要一个房产。
class Parent:
ATRIBUTE1 = 'dad'
ATRIBUTE2 = ' good'
@property
def attribute3(self):
return self.ATRIBUTE1 + self.ATRIBUTE2
现在parent.attribute3
和child.attribute3
会为您提供所需的结果。
答案 1 :(得分:1)
ATTRIBUTE3
在创建类时进行评估,而不是在每次访问时重新计算。因此,您继承了父的值,而不是公式。
如果您希望在每次访问时重新计算属性值,可以使用@property
:
class Parent:
ATRIBUTE1 = 'dad'
ATRIBUTE2 = ' good'
@property
def ATRIBUTE3(self):
return self.ATRIBUTE1 + self.ATRIBUTE2
你可以像以前一样访问它(虽然只读):
print(child.ATTRIBUTE3)