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

本文介绍Python中类的继承方式,包括如何使用super函数简化代码,以及多重继承的方法解析顺序。通过具体示例展示了如何实现类的继承,并讨论了Python 3.x中多重继承的特点。
#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()


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值