关于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方法一直调用不到

我想要达到的结果

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

望采纳,代码如下:

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)