欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 类继承 重写 super MRO

程序员文章站 2022-05-24 15:08:25
...

          类继承的好处的就是少写代码。

          重点讲一下,基类中为什么要有super(基类,self).__init__()或patrent.__init__()   

          其实,它们的作用都是一样的,为了MRO

           所谓的MRO是:             

           class Root(object):

def __init__(self):
        # self.name = name
        # self.age = age
print 'this is Root'
# def t1(self):
    #     print self.name
class B(Root):
    def __init__(self):
        # super(B,self).__init__()
Root().__init__()
        # print self.name
print 'leave B'
class C(Root):
    def __init__(self):
        # super(C,self).__init__()
print 'leave C'
class D(B,C):
    pass
this is Root
this is Root
leave B
(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.Root'>, <type 'object'>)
   并不是所有的基类都需要super,只有用到父类的__init__()

   关于重写,就是变成子类的方法,原父类的方法不受影响。
   
class E(object):
    A = 10
def __init__(self,name):
        self.name = name
        print 'E'
def spam(self):
        # print self.name
print 'spam'
def f1(self):
        print 'patrent.f1',self.name


class F(E):
    def __init__(self):
        super(F,self).__init__('name')
        print 'F'
def f1(self):
    #     print 'F.f1'
F().f1()
        F.A






f = F()
f.spam()
e = E(9999)
e.f1()

reference :
https://laike9m.com/blog/li-jie-python-super,70/
http://ajstar.blog.163.com/blog/static/174234839201011932651799/
http://www.crazyant.net/1303.html
相关标签: python