python 继承

(一)单继承
(1)方式:
class son(parent name):
(2)继承的传递性:

例:创建animal类,dog类,以及dog的子类zhtyq(中华田园犬)

class animal:
    def eat(self):
        return
    def sleep(self):
        return
    def drink(self):
        return
class dog(animal):
    def bark(self):
        print("汪汪叫")
class zhtyq(dog):
    def fly(self):
        print("i am flying")

这里的中华田园犬同样可以使用dog的父类animal中的方法
但是如果再建一个animal的子类cat,中华田园犬继承了dog,就无法调用cat里面的方法。

(3)继承的扩展与重写

问题引出:我们引用的父类的方法无法满足子类的要求,这时候可以在子类中重写父类的方法
1:重写
直接在子类中创建与父类方法名字一样的方法。
2:扩展
重写方法时需要调用父类的方法,运用super().方法名
例:

  def bark(self):
        print("嘿嘿一笑")
        #super()调用父类执行
        super().bark()
        #其他根据需求进行改写
        print("sdaasd")

(4)访问父类的私有属性与方法
子类无法继承父类的私有属性与方法,但是可以通过父类的公有方法访问父类的属性与方法
例:

class father:
    def __init__(self):
        self.name=1
        self.__num=2
    def __private(self):
        print("我是私有方法")
    def get_num(self):
        return self.__num
    def get_private(self):
       self.__private()

class son(father):
    pass
son1=son()
print(son1.name)
son1.get_private()

这里的get_private就是通过访问父类的公有方法访问父类的私有方法

(二)多继承

(1)方式:
class son(f1,f2,f3…)
例:

class father:
    def f1(self):
        print("father")
class mother:
    def m1(self):
        print("mother")
class son(father,mother):
    pass
son1=son()
son1.f1()
son1.m1()

(2)注意:多个父类方法重名
例:

class father:
    def f1(self):
        print("f1---> father")
    def m1(self):
        print("m1---> father")
class mother:
    def m1(self):
        print("m1---> mother")
    def f1(self):
        print("f1--->  mother")
class son(father,mother):
    pass
son1=son()
son1.f1()
son1.m1()

结果:

f1---> father
m1---> father

总结,调用各个父类的重名方法,优先调用排名靠前的父类
尽量避免多继承
(3)搜索机制与mro
python3的搜索方法会从第一个类开始,如果找到所用的方法就不会再往后搜索

print(son.__mro__)

结果

(<class '__main__.son'>, <class '__main__.father'>, <class '__main__.mother'>, <class 'object'>)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值