# ### 多继承
# (1) 基本语法
class Father():
f_property = "风流倜傥,英俊潇洒"
def f_hobby(self):
print("吃喝嫖赌抽,坑蒙拐骗偷,喜欢烫头")
class Mother():
m_property = "沉鱼落雁,闭月羞花"
def m_hobby(self):
print("打麻将,跳广场舞,喜欢买名牌包包")
# 多继承:在括号里面用逗号,把多个父类隔开
class Daughter(Father,Mother):
pass
obj = Daughter()
print(obj.f_property)
obj.m_hobby()
# (2) 调用父类
class Father():
f_property = "风流倜傥,英俊潇洒"
def f_hobby():
print("吃喝嫖赌抽,坑蒙拐骗偷,喜欢烫头")
class Mother():
m_property = "沉鱼落雁,闭月羞花"
def m_hobby(self):
print("打麻将,跳广场舞,喜欢买名牌包包")
"""
(1)super本身是一个类 super()是一个对象 用于调用父类的绑定方法
(2)super() 只应用在绑定方法中,默认自动传递self对象 (前提:super所在作用域存在self)
(3)super用途: 解决复杂的多继承调用顺序
"""
class Son(Father,Mother):
# f_property = "子类的属性f_property"
# (1)通过类的方式调用父类的相关成员
def skill1(self):
# 调用Father中的f_hobby
Father.f_hobby()
# 调用Mother中的m_property
print(Mother.m_property)
# (2)通过对象的方式调用父类的相关成员
def skill2(self):
# 调用Father中的f_property
print(self.f_property)
# 调用Mother中的m_hobby
self.m_hobby()
# (3)使用super调用父类的相关成员
def skill3(self):
# 调用Father中的f_property
# super() 一定调用的是父类的,区别于self.
# print(super().f_property)
# super().f_hobby() error super()调用的是绑定方法,默认传递self参数
# 调用Mother中的m_hobby
super().m_hobby()
print("<====>")
obj = Son()
# obj.skill1()
# obj.skill2()
obj.skill3()
'''
self 在子类存在这个成员的时候,调用自己的
子类不存在这个成员的时候,调用父类的
而super,是一定只调用父类的公有成员属性,和公有绑定方法.
'''