day23.面向对象之继承

1.什么是继承            

继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类

python中类的继承分为:单继承和多继承

class A:pass

class B(A):pass

print(A.__bases__)      # object 是最初识的类,没有继承的类则继承object
print(B.__bases__)
###
(<class 'object'>,)
(<class '__main__.A'>,)

2.继承的派生与super的使用        

class Animal:
    def __init__(self,name,aggr,hp):
        self.name = name
        self.aggr = aggr
        self.hp = hp
    def bite(self):
        self.aggr += 50

class Dog(Animal):
    def __init__(self,name,aggr,hp,kind):
        Animal.__init__(self,name,aggr,hp)  #知识点1: 或者使用# super().__init__(name,aggr,hp),在python3中适用
        self.kind = kind    # 知识点2:派生属性,父类没有的种类属性,子类有的

    def eat(self):          # 知识点3:派生方法,父类没有的方法,子类有的方法
        self.hp += 100

    def bite(self):
        Animal.bite(self)       # 知识点4:此处若想在调用父类原有方法以及增加子类功能。需要调用父类功能。
        self.hp += 100

jin = Dog('旺财',100,200,'金毛')
jin.eat()
print(jin.hp)

3.多继承              

此处只讨论python3

钻石继承

class A:
    def __init__(self):print('A')

class B(A):
    def __init__(self):print('B')

class C(A):
    def __init__(self):print('C')

class D(B,C):
    def __init__(self):print('D')

d = D()
print(D.mro())    # 知识点:mro方法可以查看继承顺序
D
[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]

猜你喜欢

转载自www.cnblogs.com/jiuyachun/p/10650567.html
今日推荐