阅读背景:

Python学习27:继承以及多重继承方式,MRO(方法解释顺序)_jhe_zhang-blog

来源:互联网 
#FileName : baseClass.py

#继承的方式,内建函数super的使用,多重继承

#定义父类Parent
class Parent(object):
    def __init__(self):
        print('Calling Parent‘s Constructor')

#定义子类Chaild
class Child(Parent):
    def __init__(self):
        #重写子类的构造器不会调用父类的构造器,所有要在子类构造器内部调用__init__
        #Parent.__init__(self)    #显示的传递self参数
        #使用内建函数super()代替Parent:让内建函数super查找谁是父类:使用内建函数super的好处是:代码修改回相应的减少
        super(Child,self).__init__()
        print('Calling Child’s Constructor') 

#使用子类Child构建实例
c = Child()

#查看实例c属于哪个类
print(c.__class__)
#查看类Child的基类是哪个
print(Child.__bases__)
#查看类Parent的基类是哪个
print(Parent.__bases__)

#之前的Python版本对类的继承要求很严格(带有object有着明确的区分,3.0以后没有这区分(默认带有object))
#3.0之前的多重继承的方法解释顺序(不带有Object:深度优先,从左到右,;带有object:首先查找同胞兄弟,采用一种广度优先的方式)
#3.0以后都是采用首先查找同胞兄弟,采用一种广度优先的方式
print('多重继承的使用:--------------------------------')
print()
#定义类p1,p2
class p1:
    def foo(self):
        print('p1______foo')
        
class p2:
    def foo(self):
        print('p2______foo')
        
    def bar(self):
        print('p2_____bar')

#定义两个子类c1,c2
class c1(p1,p2):
    pass

class c2(p1,p2):
    def bar(self):
        print('c2______bar')
        
#在定义一个子类gc
class gc(c1,c2):
    pass

#使用gc构建实例
g = gc()
g.foo()			#方法解释顺序:g=>c1->c2=>p1
g.bar()			#方法解释顺序:g->c1->c2()

#FileName : baseClass.py

#继承的方式,内建函数super的使用,多



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: