pythonsuper继承规则,python_super()及继承顺序

class A(object):

def func(self):

print(‘A‘)

class B(A):

def func(self):

super().func()

print(‘B‘)

class C(A):

def func(self):

super().func()

print(‘C‘)

class D(B,C):

def func(self):

super().func()

# super(D,self).func() # python 2的新式类要求super必须把类名和self传进去。python3也支持这种写法。

print(‘D‘)

print(D.mro()) # [, , , , ]

D().func() # A C B D 从 mro顺序的最顶端开始执行

# super是按照mro顺序来寻找当前类的下一个类

# 在py3中不需要传参数,自动就帮我们寻找当前类的mro顺序的下一个类中的同名方法

# 在py2中的新式类中,需要我们主动传递参数super(子类的名字,子类的对象).函数名()

# 这样才能够帮我们调用到这个子类的mro顺序的下一个类中的方法

# 在py2的经典类中,并不支持使用super来找下一个类

# 在D类中找super的func,那么可以这样写 super().func()

# 也可以这样写 super(D,self).func() (并且在py2的新式类中必须这样写)

# 在单继承的程序中,super就是找父类

class User:

def __init__(self,name):

self.name = name

class VIPUser(User):

def __init__(self,name,level,strat_date,end_date):

User.__init__(self,name) # 无论有没有继承,这种写法都可以执行。

# super(VIPUser,self).__init__(name)

# super().__init__(name) # 推荐的

self.level = level

self.strat_date = strat_date

self.end_date = end_date

太白 = VIPUser(‘太白‘,6,‘2019-01-01‘,‘2020-01-01‘)

print(太白.__dict__)

原文:https://www.cnblogs.com/Collin-pxy/p/13034434.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值