24小时热门版块排行榜    

Znn3bq.jpeg
汕头大学海洋科学接受调剂
查看: 768  |  回复: 3

tuburfransth

金虫 (正式写手)

[求助] Python多重继承怎么初始化?

代码如下:
class A(object):
        def __init__(self, a):
                print('__init__ A', str(a))
                self.A = a
               
class B(A):
        def __init__(self, a, b):
                super(B, self).__init__(a)
                print('__init__ B', str(b))
                self.B = b

class C(A):
        def __init__(self, a, c):
                super(C, self).__init__(a)
                print('__init__ C', str(c))
                self.C = c
               
class D(B, C):
        def __init__(self, a, b, c, d):
                B.__init__(self, a, b)                    # 这行及下行代码有问题,貌似对基类A进行了两次初始化
                C.__init__(self, a, c)
                print('__init__ D', str(d))
                self.D = d
               
shanghe = D('x', 'y', 'z', 'k')
-------------------------------------------------------------------------------------------------------------------
Traceback (most recent call last):
  File "test.py", line 25, in <module>
    shanghe = D('x', 'y', 'z', 'k')
  File "test.py", line 20, in __init__
    B.__init__(self, a, b)
  File "test.py", line 8, in __init__
    super(B, self).__init__(a)
TypeError: __init__() missing 1 required positional argument: 'c'
-----------------------------------------------------------------------------------------------------------
说明:A是基类,B和C都继承A,而D同时继承B和C,问题出在注释那一行及下一行,这两行初始化代码应该怎么写?
还有一个问题就是:B和C都继承了A,那么假如A中有一个函数名为getname(),class D(B, C):会导致getname()函数被覆盖一次吗?也就是说由于B和C都继承了A中的getname()函数,导致有一个被覆盖了,是不是这样?
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tuburfransth

金虫 (正式写手)

自己尝试修改了几处,运行结果和预想的一样,修改后的代码如下:
class A(object):
        def __init__(self, a):
                print('__init__ A', str(a))
                self.A = a
               
class B(A):
        def __init__(self, a, b):
                B.__init__(self, a)        # 修改此处,不知道为什么super(B, self).__init__(a)会有问题
                print('__init__ B', str(b))
                self.B = b

class C(A):
        def __init__(self, a, c):
                C.__init__(self, a)        # 修改此处, 不知道为什么super(C, self).__init__(a)会有问题
                print('__init__ C', str(c))
                self.C = c
               
class D(B, C):
        def __init__(self, a, b, c, d):
                B.__init__(self, a, b)                    # 这行及下行代码有问题,貌似对基类A进行了两次初始化
                C.__init__(self, a, c)
                print('__init__ D', str(d))
                self.D = d
               
shanghe = D('x', 'y', 'z', 'k')
2楼2016-12-13 18:27:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ygidtu

新虫 (正式写手)

两次A的初始化很正常吧,你B是继承A的,C也是继承A的,然后D里同时有BC,不就是包含了两个A?所以A有的那个函数肯定被BC玩坏了,多重继承我从来没考虑过同时继承同一个父类衍生出来的两个子类,所以还真不知道怎么解决

发自小木虫Android客户端
3楼2016-12-14 09:31:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

baichi121234

禁虫 (职业作家)

本帖内容被屏蔽

4楼2016-12-14 09:36:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 tuburfransth 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 297工科调剂? +7 河南农业大学-能 2026-04-13 7/350 2026-04-13 23:07 by pies112
[考研] 求调剂,985材料与化工348分 +9 涵竹刘 2026-04-11 14/700 2026-04-13 22:26 by 涵竹刘
[考研] 0831一轮调剂失败求助 +10 小熊睿睿_s 2026-04-11 10/500 2026-04-12 22:43 by 长弓傲
[考研] 药学求调剂 +3 RussHu 2026-04-12 4/200 2026-04-12 17:49 by 陈皮皮
[基金申请] 山东省基金2026 +5 jerry681 2026-04-08 6/300 2026-04-12 08:33 by kudofaye
[考研] 305求调剂 +7 玛卡巴卡boom 2026-04-11 7/350 2026-04-12 07:35 by zhouxiaoyu
[考研] 化工调剂求导师收留!一志愿失利,踏实肯干,有植物提取科研经历 +20 yzyzx 2026-04-09 21/1050 2026-04-12 00:12 by 小小小小啦啦啦
[考研] 343求调剂 +9 王国帅 2026-04-10 9/450 2026-04-11 20:31 by dongdian1
[考研] 求调剂 +11 翩翩一书生 2026-04-09 11/550 2026-04-11 19:57 by 逆水乘风
[考研] 求调剂 +6 archer.. 2026-04-09 8/400 2026-04-11 10:55 by zhq0425
[考研] 085410-273求调剂 +6 X1999 2026-04-10 6/300 2026-04-11 10:32 by Delta2012
[考研] 297求调剂 +9 Kwgyz 2026-04-09 9/450 2026-04-11 10:09 by zhq0425
[考研] 调剂 化学 307 +21 73372112 2026-04-09 23/1150 2026-04-10 23:53 by wj165256
[考研] 机械专368 有去处吗 +4 种大树 2026-04-10 4/200 2026-04-10 15:31 by jiajinhpu
[考研] 一志愿华东师范生物学326分,求调剂 +8 刘墨墨 2026-04-09 8/400 2026-04-10 12:00 by pengliang8036
[考研] 一志愿中科大070300化学,314分求调剂 +12 wakeluofu 2026-04-09 12/600 2026-04-10 09:57 by liuhuiying09
[考研] 考研调剂 +13 冰冰,,, 2026-04-07 13/650 2026-04-09 17:01 by Lilly_Li
[考研] 296求调剂 +3 汪!?! 2026-04-08 3/150 2026-04-08 22:00 by zhouyuwinner
[考研] 生物学学硕,初试351分,求调剂 +4 …~、王…~ 2026-04-08 5/250 2026-04-08 21:49 by limeifeng
[考研] 277、学硕,求调剂 数一104, +11 瓶子PZ 2026-04-07 12/600 2026-04-07 23:30 by 一只好果子?
信息提示
请填处理意见