三大特征
继承的概念
生活中的继承,一般指的是子女继承父辈的财产
继承的好处:节省代码量
class Person:
# 初始化方法
def __init__(self, name, age, sex):
# 添加属性
self.name = name
self.age = age
self.sex = sex
def play(self):
print(f'{self.name}打王者')
# 括号里面的类,表示继承的是哪个类
# 继承Person类之后,就拥有person类里面所有的属性和方法
class SiChuan(Person):
def eat(self):
print('四川人爱吃火锅')
class GuanDong(Person):
def play(self):
print("广东人爱喝茶")
ayan = SiChuan('阿言', 18, 'female')
print(ayan.name)
ayan.play()
ayan.eat()
重用
子类重新定义父类的方法,让同一种方法具有不同的行为
class Person:
# 初始化方法
def __init__(self, name, age, sex):
# 添加属性
self.name = name
self.age = age
self.sex = sex
def play(self):
print(f'{self.name}打王者')
# 括号里面的类,表示继承的是哪个类
class SiChuan(Person):
def eat(self):
print('四川人爱吃火锅')
def play(self):
# 重用:子类重新定义父类的方法,让同一种方法具有不同行为
# 第一种方法
super().play()
print('四川人爱打麻将')
class GuanDong(Person):
def play(self):
# 方法二,不推荐
Person.play(self)
print("广东人爱喝茶")
ayan = SiChuan('阿言', 18, 'female')
# print(ayan.name)
# ayan.play()
# ayan.eat()
ayan1 = GuanDong('阿言1', 18, 'femal')
ayan1.play()
多继承
一个类里面继承多个类,多继承要遵循就近原则
class Person(object):
# 初始化方法
def __init__(self, name, age, sex):
# 添加属性
self.name = name
self.age = age
self.sex = sex
def eat(self):
print(f'{self.name}打王者')
# 括号里面的类,表示继承的是哪个类
class SiChuan(Person):
def eat(self):
print('四川人爱吃火锅')
def play(self):
print('四川人爱打麻将')
class GuanDong(Person):
def eat(self):
super().eat()
print("广东人爱吃肠粉")
def play(self):
print("广东人爱喝茶")
class Hunxue(GuanDong,SiChuan):
# pass 代表类里面任何属性和方法 保证结构的完整性
pass
hunxue = Hunxue('混血', 1, 'female')
print(hunxue.name)
hunxue.eat()
# print(Hunxue.__base__) # 查看类继承的第一个类
print(Hunxue.__bases__) # 查看类继承的所有类
print(Hunxue.mro()) # 查看类继承的继承顺序
class Base:
def eat(self):
print('base')
class A(Base):
def eat(self):
super().eat()
print("A")
class B(Base):
def eat(self):
super().eat()
print('B')
class C(A,B):
def eat(self):
print("C")
super().eat()