python隐式调用_python – 隐式调用父类初始化程序

class A(object):

def __init__(self, a, b, c):

#super(A, self).__init__()

super(self.__class__, self).__init__()

class B(A):

def __init__(self, b, c):

print super(B, self)

print super(self.__class__, self)

#super(B, self).__init__(1, b, c)

super(self.__class__, self).__init__(1, b, c)

class C(B):

def __init__(self, c):

#super(C, self).__init__(2, c)

super(self.__class__, self).__init__(2, c)

C(3)

在上面的代码中,注释掉的__init__调用似乎是进行超类初始化的普遍接受的“智能”方式.但是,如果类层次结构可能会发生变化,我一直在使用未注释的表单,直到最近.

看来,在上面层次结构中对B的超级构造函数的调用中,再次调用B .__ init__,self .__ class__实际上是C,而不是我一直假设的B.

在Python-2.x中是否有某些方法可以在调用超级构造函数时保持正确的MRO(关于以正确的顺序初始化所有父类)而不命名当前类(超级中的B in(B,self) .__ init __(1,b,c))?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值