继承:子类要使用父类当中的属性或者方法。
单继承
继承以后,子类可以使用父类的所有属性和方法
重写:子类和父类都有的属性和方法,使用子类的
class OneHobby:
"""父类"""
def dance(self):
print("爱好跳舞")
def play(self):
print("爱好玩电脑")
class TwoHobby(OneHobby):
"""子类继承父类 Onehobby"""
def swim(self):
print("爱好游泳")
def play(self): # 重写 -- 使用自己的
print("爱好玩手机")
TwoHobby().play() # 爱好玩手机 - 调用父类的
TwoHobby().dance() # 爱好跳舞 - 调用父类的
多继承:
子类可以同时继承多个父类,这些父类所有的特性(属性,方法)子类都可以使用
如果所有的父类都具有同样的一个方法
继承顺序的问题:
1, 找自己;
2, 根据代码当中继承的父类的先后循序查找
py模块中,父类要写在上面,要不然会有错误
class ZeroHobby:
def see(self):
print("喜欢看")
class OneHobby:
"""父类"""
def dance(self):
print("爱好跳舞")
def play(self):
print("爱好玩电脑")
class TwoHobby:
"""子类继承父类 Onehobby"""
def swim(self):
print("爱好游泳")
def play(self): # 重写 -- 使用自己的
# super().play()
print("爱好玩手机")
class ThreeHobby(ZeroHobby, OneHobby, TwoHobby):
"""多继承,zero、One、Two"""
def eat(self):
print("喜欢吃")
ThreeHobby().play() # 爱好玩电脑 - 按照顺序查找继承
超继承:super()函数
方法1. 父类名().方法名() - 会占内存,不推荐
方法2. self.方法名() - 也不行会一直调用
方法3. super().方法名() - 调用父类的方法
子类重写了父类的方法,但是子类还想用之前被重写之前父类的方法,就可以使用超继承。这是一种贪婪的继承。(这样调用的时候,不仅可以调用父类又可以调用子类的方法)
class OneHobby:
"""父类"""
def dance(self):
print("爱好跳舞")
def play(self):
print("爱好玩电脑")
class TwoHobby(OneHobby):
"""子类继承父类 Onehobby"""
def swim(self):
print("爱好游泳")
def play(self): # 重写 -- 使用自己的
super().play() # 超继承使用父类的
print("爱好玩手机") # 重写的自己的
TwoHobby().play() # 爱好玩电脑 爱好玩手机