python函数参数多态 python中多态的定义

python中到底“多态”是什么!!!

Python是一种纯粹的面向对象语言。面向对象编程中的四大特征分别是:抽象、封装、继承和多态。多态根据上下文,对象可以采用多种形式。程序将确定该对象每次执行所需的含义或用法,从而减少了重复代码。

10余年的鄢陵网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整鄢陵建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“鄢陵网站设计”,“鄢陵网站推广”以来,每个客户项目都认真落实执行。

我国有句俗语:“龙生九子,各有不同”。这就是多态。多态是同一类事物具有的多种形态。多态是面向对象编程的重要特点之一。

Python本身就是一种多态语言:

上述程序中,参数a和b可以接收不同的数据类型。当a和b同时是数字类型时,add()函数将进行加法运算;当a和b同时是字符串类型或列表类型时,add()函数将进行拼接运算。

下面用一个示例来介绍计算机编程语言中的多态。

上述程序中,定义了四个类,分别是Animal类、People类、Dog类和Pig类,其中People类、Dog类和Pig类都继承了Animal类。这就体现了同一类事物的多种形态。这四个类都有一个talk()方法。试着调用talk()方法,代码如下:

上述程序中,调用Func()函数为同一个操作,但调用的参数是不同的,即调用了不同的实例作为参数。由运行结果可知,有不同的类创建不同的实例,以不同的实例作为参数时,调用talk()得到的打印结果是不同的,这是因为每个实例具有不同的实现方式,这就是多态性的体现。

多态性是同一个操作因作用实例不同而表现出不同实现方式的特性。多态性增加了程序的灵活性,以不变应万变,无论实例千变万化,使用者都是以同一种形式去调用;多态性还增加了程序可扩展性,通过继承创建新的类,子类可以使用父类的方法,也可以使用自己重写的方法。

关于深度学习的基础问题可以看下这个网页的视频教程,网页链接,希望我的回答能帮到你。

Python类的继承与多态详细介绍

类(Class): 用来描述具有相同的属性和方法的对象的集合。

类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用

self:self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类。

类调用 Car.weight

实例化 car01=Car(5)

实例对象调用 car01.weght

我们在构造类时,Python3默认我们继承了object这个基类,我个人理解object就是个空的类,可以不用管为何要在括号中写上object,这是Python3的特性,在python2中如果你没有写object的话不会默认继承了object这个基类。

同样的我们自己希望继承的父类只需要把objetc改为我们自己定义的类名即可。子类中可以拥有父类中所有的公有属性和方法,但是可以通过在变量名前加下划线使其变为私有,这样子类就不可以访问父类中的成员了。

以下三个公交车类的父类均为客车类,我们可以写一个funcs方法使得每次调用funcs方法时,传入不同的对象以执行不同的func方法,具体实现如下:

主函数 :

可以看到,我将小 汽车 实例化为带有重量为5t的一个具体对象,将客车实例化为带有重量为20t的一个具体对象,将三个公交车实例化为带有重量为15t的一个具体对象.

如上图所示,我每次在调用funcs方法时都传入了一个实例化对象,funcs根据不同的对象执行相应的内部方法。

Python中的多态?

times函数为例谈谈多态,就像我们看到的那样,times函数中表达式×*y的意义完全取决于x和y的对象类型,同样的函数,在一个实例下执行的是乘法,在另一个实例下执行的却是重复。Python把对某一对象在某种语法下的合理性交给那个对象自身来判断。实际上,*作为一个分派机制,将执行的控制权移交给被处理的对象。

这种依赖类型的行为称为多态,其含义就是一个操作的意义取决于被操作对象的类型。因为Python是动态类型语言,所以多态在Python中随处可见。事实上,在 Python中所有操作都是多态的操作:print、index、*运算符,以及更多。这实际上是有意而为的,并且从很大程度上算作是这门语言简洁性和灵活性的一个表现。例如,函数可以自动地应用到所有类别的对象上。只要对象支持所预期的接口(也称为协议),函数就能处理它们。也就是说,如果传给函数的对象支持预期的方法和表达式运算符,那么它们对函数的逻辑来说就是有着即插即用的兼容性。

即使是简单的times 函数,对任意两个支持*的对象都可以执行,无论它是哪种类型,也不管它是何时编写的。这个函数对于数字来说是有效的(执行乘法),或者一个字符串和一个数字(执行重复),或者任意其他支持扩展接口的兼容对象——甚至是我们尚未编写过的基于类的对象。


名称栏目:python函数参数多态 python中多态的定义
文章来源:http://hbruida.cn/article/hpdsoh.html