为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

料青山看我应如是 2021-11-30 10:23:58
当我运行它时,我得到了与创建的物种对象相对应的所需字符串。我的目标是能够在 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


查看完整回答
反对 回复 2021-11-30
?
四季花海

TA贡献1811条经验 获得超5个赞

修改你的 Animal 类,如下所示。当您从子类调用 super 方法时,您将创建的类的实例传递给父类的 init 函数。所以类的实例被传递给 Mammal init 函数,它调用 super 并将实例传递给 Animal init 函数。


class Animal(object):


    def __init__(self):

        self.speak()


    def speak(self):

        print(self)


查看完整回答
反对 回复 2021-11-30
  • 2 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信