😁总结一下前一段时间的学习成果,将我对知识点的简易理解方法分享给大家,大家可以参考着学习,希望对你们学习python有帮助😁
使用继承开发程序
用子类继承父类
---------------------------------------------------------------------
首先我们先创建一个父类 ,大家可以将我们的这个父类理解为,就是外面最大的一个类,
他的里面可以包含许多其他的子类(这个子类的创建很简单,咱们继续往下看)
我们在下面创建了一个我们的animals父类,以及他这个父类里面的三个方法
---------------------------------------------------------------------
class animals:
def eat(self):
print('吧唧吧唧,我爱干饭')
def run(self):
print('随风奔跑自由是方向')
def play(self):
print('我是动物小淘气')
---------------------------------------------------------------------
接下来我来带大家来创建这个,animals 父类 的子类
我们只需要在这新创建的类的括号里面添加上我们父类的名称就行了
这样 我们就成功创建了animals 这个父类的子类Dog
---------------------------------------------------------------------
class Dog(animals):
def cry(self):
print("哎嘿!! 我们狗狗家族喜欢汪汪汪")
---------------------------------------------------------------------
同理创建喵喵家族也是这样的操作,
我们只需要将 animals 写入我们定义Cat类的括号里就行了
---------------------------------------------------------------------
class Cat(animals):
def fly(self):
print('嘿呦!,我们喵喵家族可以飞檐走壁')
def cry(self):
print("呼哈! 我们猫猫家族喜欢喵喵喵")
---------------------------------------------------------------------
😊😊通过上面的代码,我们很容易就学会了怎么创建我们子类的方法,我相信大家可以恒容易就可以创建出来一个Cat类 或者 Dog类 的子类吧 ,这写类就是我们 animals 这个类的孙类,也就是子子类
# 我们在这里很快就创建出了一个Dog类的子类 erha 类
class erha(Dog):
def do(self):
print('我是一只活跃的哈哈,我最爱拆家 🕶 ')
接下来让我们通过我们的孙类来使用他的父类和他的爷爷类的方法
wangcai = erha() #我们现在定义了一只名叫旺财的二哈
#这只旺财可以做所有二哈都喜欢做的拆家
wangcai.do()
>>> 我是一只活跃的哈哈,我最爱拆家 🕶
# 也可以做所有狗类都喜欢做的汪汪
wangcai.cry()
>>> 哎嘿!! 我们狗狗家族可以汪汪汪
# 也可以做所有动物都可以做的事情
wangcai.run()
wangcai.eat()
wangcai.play()
>>> 随风奔跑自由是方向
>>> 吧唧吧唧,我爱干饭
>>> 我是动物小淘气
同理我们的cat类 和 dog类 也可以使用anials 类里的方法 ,但是记住,我们的父类不能使用我们子类 和孙类的方法
讲到这里,万一我们的旺财是一只全能型狗狗😜,他既可以拆家还可以飞檐走壁类,这可怎么办才好,我们不能掩盖了旺财的才华对吧,这时候我们就可以用到 <多继承>
多继承
# 这时候我们只需要,将我们的Cat类 也添加进我们的erha类里来就行了
class erha(Dog,Cat):
def do(self):
print('我是全能的狗狗!!! ')
wangcai = erha() #旺财是一只全能二哈
wangcai.cry()
>>> 哎嘿!! 我们狗狗家族可以汪汪汪
wangcai.fly()
>>> 嘿呦!,我们喵喵家族可以飞檐走壁
# 这样我们的旺财不但可以汪汪叫,还可以飞檐走壁啦👍
补充一下我们的这个旺财展示技能也是有先后顺序的,因为在我们的Cat类里面 也有我们的cry方法
当我们掉用cry方法的时候会有顺序,这个顺序取决于我们erha类的括号里引入父类的顺序,
在这个例子中我们是先引用了 Dog 类 在引用的 Cat 类 所以我们调用 cry 方法时
会优先调用Dog类里的cry方法 ,那我们怎么快速知道我们类的调用顺寻呢?
👏👏查询多继承的调用顺序
class A:
def test(self):
print('------A-------')
class B:
def test(self):
print('------B-------')
class C(A,B): #调用了A。B 两个父类的属性
def test(self):
print('------C-------')
lala = C()
lala.test()
>>> ------C-------
#使用方法 查询C类的调用顺序
print(C.__mro__)
#这个输出的结果是 (<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)
# 说人话 就是先在C类里面找 找不到去A类 A类找不到去B类 都找不到只能去 object <object 是所有类的父类>
叮! 请查看😊😊