当我运行它时,我得到对应于创建的物种对象的所需字符串。我的目标是能够在Animal类中创建一个名为speak的方法来实现相同的功能。但我对如何做到这一点并不了解。
class Animal(object):
def __init__(self):
pass
def speak():
pass
class 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)
您继承的类可以访问父类中定义的任何方法。因此,要实现这一点,只需在speak
类和Animal
中定义一个名为print
的新方法,就像在示例中所做的那样:
class Animal(object):
def __init__(self):
print(self)
pass
def speak(self):
print(self)
然后只需创建实例并调用该函数:
garfield = Cat()
garfield.speak()
产量
meeeow
像下面一样修改您的Animal类。从子类调用super方法时,您将所创建的类的实例传递给父级的init函数。因此,类的实例被传递给Mammal init函数,该函数调用super并将实例传递给Animal init函数。
class Animal(object):
def __init__(self):
self.speak()
def speak(self):
print(self)