请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

diorsgg

新兵

  • 82

    积分

  • 0

    帖子

  • 0

    精华

本帖最后由 diorsgg 于 2019-7-15 22:19 编辑

python新手一个,观看兄弟连python视频教程收获很多,但有个问题咨询(菱形继承的解决小节)————————————————————————————————————————————————————————————————————
代码:

class 类1:
    def say(self):
        print('A')
        print('A')

class 类2(类1):
    def talk(self):
        print('B')
        super().say()
        print('B')

class 类3(类1):
    def speak(self):
        print('C')
        super().say()
        print('C')

class 类4(类2,类3):
    def communicate(self):
        print('D')
        super().talk()
        super.speak()
        print('D')

#此处实例化一个对象——something
something = 类4()

#调用speech方法
something.speech()
#按照视频发展,输出结果应该是
'''
D
B
A
A
B
CC
D
'''

#而我自己运行时结果跟直接     类名.方法名      的结果一模一样(感觉MRO列表此时没有起作用)
类3中调用类1的say功能,类2中也调用类1中的say功能
所以会导致类1中say的内容输出两次
'''
D
B
A
A
B
C
A
A
C
D
'''
A会重复输出输出两次……

原因猜测:

1.不同类中的函数名不同导致,如果使用相同函数名会直接覆盖掉之前的函数名,所以最后输出时只用写入一个super().say()
2.自己这种写法有问题


麻烦各位多多指点,python新手确有很多不懂,不知道怎么提问,只能以代码的方式说一下我的问题所在,先谢过了

收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册