Python笔记(十九)_继承

继承

继承可以把父类的所有功能都直接拿过来,这样就不必从零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写

 

多重继承

通过多重继承,一个子类就可以同时获得多个父类的所有功能

class A():

    def __init__(self):

        print("进入A…")

        print("离开A…")

class C(A):

    def __init__(self):

        print("进入C…")

        super().__init__()

        print("离开C…")

class B(A):

    def __init__(self):

        print("进入B…")

        super().__init__()

        print("离开B…")     

class D(C, B):

    def __init__(self):

        print("进入D…")

        super().__init__()

        print("离开D…")

注意:多重继承容易导致重复调用的问题

如果两个父类方法名同,默认调用的是子类在括号中排前面的父类的方法

 

对父类方法重写

如果你的父类方法的功能不能满足你的需求,你可以在子类追加方法或者重写你父类的方法

子类未重写 __init__,实例化子类时,会自动调用父类定义的 __init__方法

子类如果重写了__init__ 时,实例化子类时会覆盖父类的__init__方法

当子类和父类都存在相同的A方法时,我们说子类A的覆盖了父类的A,在代码运行的时候,只会调用子类的A

 

调用被覆盖的父类方法

1.调用未绑定的父类方法

class Fish:

    def __init__(self):

        self.x=r.randint(0,10)

    def move(self):

        print('位置是%s' % self.x)

class Shark(Fish):

    def __init__(self): #对父类__init__方法的重写

        Fish.__init__(self)            #调用父类的方法,并要写入所有的父类名称,如有n个父类,则要写n行调用代码,还容易在多继承中造成钻石继承的问题

        self.hungry=True

    def eat(self):

        if self.hungry:

            print('吃饱啦')

shark=Shark()

在Fish.__init__(self)中的self实际上指的是子类的实例化对象,所以还有另一种方法,在不修改代码的情况下直接调用Fish.__init__(shark)

 

2.使用super函数(推荐使用)

super()函数的优点在于不需要给出任何基类的名字,它会自动找出所有基类以及对应的方法

class Fish:

    def __init__(self):

        self.x=r.randint(0,10)

    def move(self):

        print('位置是%s' % self.x)

class Shark(Fish):

    def __init__(self): #对父类__init__方法的重写

        super().__init__()             #调用父类的方法,并不用给定每层父类名称,只需写一行代码

        self.hungry=True

    def eat(self):

        if self.hungry:

            print('吃饱啦')

shark=Shark()

转载于:https://www.cnblogs.com/demilisi/p/11048135.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值