当我运行它时,我得到了与创建的物种对象相对应的所需字符串。我的目标是能够在 Animal 类中创建一个名为 speak 的方法来实现相同的目的。但我对如何做到这一点没有很好的理解。class Animal(object): def __init__(self): pass def speak(): passclass Mammal(Animal): def __init__(self): Animal.__init__(self)class Cat(Mammal): def __init__(self): Mammal.__init__(self) def __str__(self): return "meeeow"class Dog(Mammal): def __init__(self): Mammal.__init__(self) def __str__(self): return "wooof"class Primate(Mammal): def __init__(self): Mammal.__init__(self)class Hacker(Primate): def __init__(self): Primate.__init__(self) def __str__(self): return "Hello world!"garfield = Cat()print(garfield)spike = Dog()print(spike)john = Hacker()print(john)
2 回答

慕容708150
TA贡献1831条经验 获得超4个赞
您继承的类可以访问父类中定义的任何方法。因此,要实现这一点,只需定义一个speak在Animal类中调用的新方法,print就像您在示例中所做的那样:
class Animal(object):
def __init__(self):
print(self)
pass
def speak(self):
print(self)
然后只需创建实例并调用函数:
garfield = Cat()
garfield.speak()
输出
meeeow

四季花海
TA贡献1811条经验 获得超5个赞
修改你的 Animal 类,如下所示。当您从子类调用 super 方法时,您将创建的类的实例传递给父类的 init 函数。所以类的实例被传递给 Mammal init 函数,它调用 super 并将实例传递给 Animal init 函数。
class Animal(object):
def __init__(self):
self.speak()
def speak(self):
print(self)
添加回答
举报
0/150
提交
取消