码迷,mamicode.com
首页 > 其他好文 > 详细

super方法

时间:2020-06-27 16:21:43      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:UNC   必须   顺序   同名   eve   iba   传参数   main   str   

super方法

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

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

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

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

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

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

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

class A:
    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()
        print(‘D‘)
# print(D.mro())
#[<class ‘__main__.D‘>, <class ‘__main__.B‘>, <class ‘__main__.C‘>, <class ‘__main__.A‘>, <class ‘object‘>]
d =D()
print(d.func())
#A
#C
#B
#D
# 在单继承的程序中,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)
        self.level = level
        self.strat_date = strat_date
        self.end_date = end_date

taibai = VIPUser(‘太白‘,6,‘2019-01-01‘,‘2020-01-01‘)
print(taibai.__dict__)
#{‘name‘: ‘太白‘, ‘level‘: 6, ‘strat_date‘: ‘2019-01-01‘, ‘end_date‘: ‘2020-01-01‘}

super方法

标签:UNC   必须   顺序   同名   eve   iba   传参数   main   str   

原文地址:https://www.cnblogs.com/wyh0717/p/13198408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!