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

问题描述 投票:0回答:2

当我运行它时,我得到对应于创建的物种对象的所需字符串。我的目标是能够在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)
python oop inheritance
2个回答
1
投票

您继承的类可以访问父类中定义的任何方法。因此,要实现这一点,只需在speak类和Animal中定义一个名为print的新方法,就像在示例中所做的那样:

class Animal(object):

    def __init__(self):
        print(self)
        pass

    def speak(self):
        print(self)

然后只需创建实例并调用该函数:

garfield = Cat()
garfield.speak()

产量

meeeow

1
投票

像下面一样修改您的Animal类。从子类调用super方法时,您将所创建的类的实例传递给父级的init函数。因此,类的实例被传递给Mammal init函数,该函数调用super并将实例传递给Animal init函数。

class Animal(object):

    def __init__(self):
        self.speak()

    def speak(self):
        print(self)
© www.soinside.com 2019 - 2024. All rights reserved.