如何从父类调用属性?

时间:2019-06-06 08:11:05

标签: python

我目前正在学习如何使用Python编程,但我一直坚持从Parent类调用属性。在下面的示例中,如何在“雏菊”上调用属性"name"以打印名称。我总是收到错误消息"'Mammal' object has no attribute 'name'

class Vertebrate:
    spinal_cord = True
    def __init__(self, name):
        self.name = name

class Mammal(Vertebrate):
    def __init__(self, name, animal_type):
        self.animal_type = animal_type
        self.temperature_regulation = True

daisy = Mammal('Daisy', 'dog')

print(daisy.name) 

在这里我要打印在Vertebrate类中定义的名称,但是总是出现错误 "'Mammal' object has no attribute 'name'"

2 个答案:

答案 0 :(得分:0)

您需要在哺乳动物的__init__中调用超级,就像这样:

class Mammal(Vertebrate):
    def __init__(self, name, animal_type):
        super().__init__(name)
        self.animal_type = animal_type
        self.temperature_regulation = True

调用哺乳动物的__init__时,它不会自动调用其父类的__init__,这就是super在这里所做的事情。

答案 1 :(得分:0)

当您给子类分配一个初始化函数时,它将覆盖被调用的父类的默认初始化函数。在这种情况下,您需要使用super函数显式调用父类。您还需要将Vertebrate类分配为Object类的子级,以便能够访问其中的所有对象模块。

class Vertebrate(object):
    def __init__(self, name):
        self.name = name
    spinal_cord = True

class Mammal(Vertebrate):
    def __init__(self, name, animal_type):
        super(Mammal, self).__init__(name)
        self.animal_type = animal_type
        self.temperature_regulation = True

animal = Mammal("Daisy", "dog")

print animal.name