制心一处,无事不办.
_#什么是继承?
#在面向对象中一个类继承了父类,就拥有了父类的所有成员(私有成员除外)
概念:
#父类:被其他类继承的类
#子类:继承其他类的类
#继承的意义
#提高代码的重用性,建立类之间的关系,方便其他操作
#继承的语法格式
‘’’
class 父类():
pass
class 子类(父类):
pass
‘’’_
继承的特征:
所有类都继承自object类
子类继承父类后,就拥有了父类中的所有成员包括魔术方法(除了私有成员)
子类继承父类后,并不会把父类的成员复制给子类,而是去引用
子类继承父类后可以重写父类的方法,叫做重写
子类重写父类的方法,依然可以使用super().父类方法名()的方式调用父类的方法
子类中如果定义了父类中不存在的方法,称为对父类的拓展
1.普通继承
#猫科动物
class maoke():
_#属性
_maose = ‘猫纹’
sex = **’m’
**_# 方法<br /> _**def **zou(self):<br /> print(**'走猫步'**)
#定义猫类
class mao(maoke):
#子类可以有自己的方法
def chi(self):
print(‘我爱吃老鼠’)
h = mao()
print(h.maose)
h.zou()
2.多继承
一个类去继承多个类
#父亲类
class F():
**def **eat(self):<br /> print(**'大口吃酒,大口喝肉'**)
#母亲类
class M():
**def **eat(self):<br /> print(**'小吃一手'**)<br />_#孩子类<br />_**class **B(F,M):
**def **eat(self):<br /> super().eat()_#多继承和多继承中父类方法的调用<br /> _print(**'哭就完事了'**)
b = B()
b.eat()
3.菱形继承
继承关系:D类继承了B类和C类,然后B类和C类又继承了A类
#祖先类
class Human():
num = 111
def eat(self):
print(‘爷爷我顿顿小烧烤’)
#父亲类
class F(Human):
num = 222
def eat(self):
super().eat()
print(‘大口吃酒,大口喝肉’)
print(super().num)
#母亲类
class M(Human):
num = 333
def eat(self):
super().eat()
print(‘小吃一手’)
print(super().num)
#孩子类
class B(F,M):
num = 444
def eat(self):
super().eat()_#多继承和多继承中父类方法的调用
_print(‘哭就完事了’)
print(super().num)
b = B()
b.eat()
4.类之间的继承关系
#MRO列表生成原则:
#1:子类永远在父类前面
#2:同一等级的类,按照子类的继承顺序摆放
#3:先子类后父类的顺序原则
#super()在调用时,并不是查找父类,而是去MRO列表上找上一个类
#super()方法在调用时,会自动把self传入到上一级的方法中
#类关系检测 issubclass() 检测一个类是否是另一个类的子类
class A():
**pass
class B(A):
pass
class C(A):
pass
class D(B,C):
pass
**print(D.mro())
#[
res = issubclass(D,B) #检测D类是否是B类的子类
print(res) #True_