在Python3中,从子类获取父类的属性
我在Python3中有一些Parent和Clild类,其中有一些atributes,其中一个是另一个atributes之间的和 父类:在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' 我只想继承子类中具有相
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)