python系列教程177——多态
Posted 人工智能AI技术
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python系列教程177——多态相关的知识,希望对你有一定的参考价值。
朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow
声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以点击跳转到我的教学网站。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!
在我们前面编写的times函数中,表达式xy的意义完全取决于x和y的对象类型,同样的函数,在一个实例下执行的是乘法,在另一个实例下执行的可能是赋值。“”在针对正被处理的对象进行了随机应变。
这种依赖类型的行为称为多态,其含义就是一个操作的意义取决于被操作对象的类型。因为Python是动态类型语言,所以多态在Python中随处可见。实际上,在Python中每个操作都是多态的操作:print、index、*操作符等等。
这实际上是有意而为的,并且从很大程度上算作是这门语言的简易性和灵活性的一个表现。作为函数,例如,它可以自动地适用于所有类别的对象类型。只要对象支持所预期的接口,那么函数就能处理。
即使是简单的times函数,任意两个支持*的对象都可以执行,无论它是哪种类型。这个函数对于数字来说是有效的(执行乘法),对于两个字符串或者一个字符串和一个数字也是有效的(执行重复),或者对于任意其他支持此类接口的兼容对象都是有效的。
除此之外,如果传递的对象不支持这种预期的接口,Python将会在*表达式运行时检测到错误,并自动抛出一个异常。
这也是Python和静态类型语言(如C++和Java)至关重要不同之处:在Python中,代码不应该关心特定的数据类型。如果不是这样,那么代码将只对编写时你所关心的那些类型有效,对以后的那些可能会编写的兼容对象类型并不支持,这样做会打乱代码的灵活性。
以上是关于python系列教程177——多态的主要内容,如果未能解决你的问题,请参考以下文章