繁体   English   中英

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

[英]How can I implement a method to print an object in the super class?

运行此命令时,将获得与创建的种类对象相对应的所需字符串。 我在这里的目标是能够在Animal类中创建一种实现相同功能的方法。 但是我对如何做到这一点没有很好的了解。

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)

如下修改您的Animal类。 当从子类中调用super方法时,您会将创建的类的实例传递给父级的init函数。 因此,将类的实例传递给Mammal init函数,该函数调用super并将该实例传递给Animal init函数。

class Animal(object):

    def __init__(self):
        self.speak()

    def speak(self):
        print(self)

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

class Animal(object):

    def __init__(self):
        print(self)
        pass

    def speak(self):
        print(self)

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

garfield = Cat()
garfield.speak()

输出量

meeeow

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM