day10②
python自学,笔记分享
昨日补发——继承
单继承+多继承
用例子解释和联系
'''
继承 单继承+多继承
如果两个类是父子类关系,子类则会继承父类的属性和方法
化简代码
'''
# 父类A
class A(object): # 继承object
def __init__(self):
self.num = 1
def info_print(self):
print(self.num)
# 子类B
class B(A): # 继承A
pass
result = B()
result.info_print() # 打印1,确实继承了A
# 单继承和多继承: 2徒弟要继承师傅的技术+徒弟还可以跟学校学
# 当一个类有多个父类的时候,默认使用第一个父类的同名属性和方法
# 师傅类
class Master(object):
def __init__(self):
self.kongfu = '[你过来啊!]'
def make(self):
print(f'运用{self.kongfu}打架')
# 创建学校类
class School(object):
def __init__(self):
self.kongfu = '[学学学]'
def make(self):
print(f'用用{self.kongfu}')
# 徒弟类:继承师傅类和学校类(调用第一个)
class Prentice(Master, School):
# 在子类中添加同名的属性和方法=独创 !!!先调用这个!!!(注意三个优先级)
def __init__(self):
self.kongfu = '[kakakaka]'
def make(self):
# 这个括号里不需要写self,因为前面有了,已经能接收到数据了
self.__init__() # 执行一下初始化,若是想也能调用父类的就必须写
print(f'运用{self.kongfu}')
def make_master_cake(self): # 再次封装
Master.__init__(self) # 调用初始化
Master.make(self) # 调用父类方法,self一定要写确保接收到数据
def make_school_cake(self):
School.__init__(self) #
School.make(self) # 这块的self一定要注意
# 若子类里有一个与父类同名同姓的就会调用子类的属性,但是若要求调用父类的呢?
# 一个人又会python又会c,这技能都要调用起来(方法写上面了)
daqiu = Prentice()
print(daqiu.kongfu)
daqiu.make() # 打印独创的
daqiu.make_master_cake() # 当三个都打印时,初始化就是必须的:因为如果不加后面的调用会显示上一个
daqiu .make_school_cake()
print(Prentice.__mro__) # 查看类的继承层级
# 多层继承:子类也会老,子类要把技能给孙子,哈哈哈
# 徒孙类
class Tusun(Prentice):
pass
xiao = Tusun()
xiao.make() # 能完美调用,啦啦啦
xiao.make_school_cake()
xiao.make_master_cake()