测开之面向对象进阶篇・《多态》
Posted 七月的小尾巴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测开之面向对象进阶篇・《多态》相关的知识,希望对你有一定的参考价值。
面向对象三大特征
面向对象编辑的三大特征:封装、继承、多态。
- 封装:客观的失误封装成类(将数据和方法放在一个类中构成了封装)。
- 继承:python中一个类可以继承于一个类,也可以继承多个类,被继承的类叫做父类,继承的叫做之类。
- 多态:指的是一类食物有多种形态,一个抽象类有多个子类(因而多态的概念依赖于继承),不同的之类对象调用相同的方法,产生不同的执行过程,多态可以增加代码的灵活度。
多态
- 定义一个父类,继承某个方法
- 定义多个子类,在子类中重新父类方法,每个之类实现不同的功能
- 假设我们定义了一个函数,需要一个父类类型的对象参数,那么调用函数的时候,传入父类不用的之类类型对象,那么这个函数会执行不同的功能,这就是多态的体现。
可能上面的描述会有些抽象,下面我们编写代码,来方便大家更好的理解多态:
class Animal(object):
"""动物类"""
def func(self):
print('动物发出了声音')
class Cat(Animal):
"""猫类"""
def func(self):
print('喵 喵 喵')
class Dog(Animal):
"""狗类"""
def func(self):
print('汪 汪 汪 ')
class Hero:
def func(self):
print('这个是英雄类的方法,不是动物类的对象')
def work01(musen: Animal):
musen.func()
上方代码中,我们定义了一个动物父类,然后通过多个动物子类去继承父类,每个动物的叫声都不一样,这里我们是继承父类,然后实现不同的功能。
假设我们只封装了一个父类,然后将所有的动物叫声都封装到父类里面,那么随着后期代码越来越复杂,会变得不易维护且耦合性强。因此我们可以使用多态的概念,从而增加代码的灵活度。
注意点:python中函数的参数是没有类型限制的,所有多态在python中的体现并不是很严谨。多态的概念是应用与JAVA和C#这一类强语言中,而Python崇尚“鸭子类型”
鸭子类型
- 鸭子类型的概念:他并不要求严格的继承体系,关注的不是对象的类型,而是它是否具有要调用的方法。
- 鸭子类型在python中的概念:
内置函数iter:参数可以是实现迭代协议__iter__
方法的任何对象的类型。
以上是关于测开之面向对象进阶篇・《多态》的主要内容,如果未能解决你的问题,请参考以下文章