零晚. 2022-12-06 16:13 采纳率: 100%
浏览 19
已结题

关于python的类与面向对象的问题

问题遇到的现象和发生背景

关于python的类与面向对象的问题

img

用代码块功能插入代码,请勿粘贴截图
class Animal(object):
    def shout(self):
        return "叫"
class Dog(Animal):
    def __init__(self, name):
        self.__name = name
        def get_name(self):
            return self.__name
        def shout(self):
           
class Cat(Animal):
    def __init__(self, name):
        self.__name = name
    def get_name(self):
        return self.__name
    def shout(self):
        


if __name__ == '__main__':
    def test():
        obj
        dog = Dog("斑点狗")
        print(dog.get_name(), end="")
        test(dog)
        cat = Cat("波斯猫")
        print(cat.get_name(), end="")
        test(cat)

运行结果及报错内容

看不懂这个main中的test方法在干嘛

我的解答思路和尝试过的方法

def test(obj):
obj.shout()
dog = Dog("斑点狗")
print(dog.get_name(), end="")
test(dog)
cat = Cat("波斯猫")
print(cat.get_name(), end="")
test(cat)
这里的Dog类的get_name和shou方法一直调用不到

我想要达到的结果

输出斑点狗汪汪叫
波斯猫喵喵叫

  • 写回答

1条回答 默认 最新

  • 阿_旭 2022-12-06 18:02
    关注

    望采纳,代码如下:

    class Animal(object):
        def shout(self):
            return "叫"
    
    
    class Dog(Animal):
        def __init__(self, name):
            self.__name = name
    
        def get_name(self):
            return self.__name
    
        def shout(self):
            print('汪汪' + super().shout())
    
    
    class Cat(Animal):
        def __init__(self, name):
            self.__name = name
    
        def get_name(self):
            return self.__name
    
        def shout(self):
            print('喵喵'+ super().shout())
    
    #斑点狗汪汪叫
    #波斯猫喵喵叫
    if __name__ == '__main__':
        def test(obj):
            obj.shout()
        dog = Dog("斑点狗")
        print(dog.get_name(), end="")
        test(dog)
        cat = Cat("波斯猫")
        print(cat.get_name(), end="")
        test(cat)
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月14日
  • 已采纳回答 12月6日
  • 修改了问题 12月6日
  • 创建了问题 12月6日