猿问

如何在超类中实现打印对象的方法?

当我运行它时,我得到了与创建的物种对象相对应的所需字符串。我的目标是能够在 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)


料青山看我应如是
浏览 145回答 2
2回答

慕容708150

您继承的类可以访问父类中定义的任何方法。因此,要实现这一点,只需定义一个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)
随时随地看视频慕课网APP

相关分类

Python
我要回答