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中适用。使用super参数可将父类的属性调用给子类 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'>]