零基础学python-15.4 函数的多态vs对象的多态
来源:互联网 发布:htc u11 网络优化 编辑:程序博客网 时间:2024/06/10 06:57
这一章节我觉得有必要再来谈一下函数的多态
1.函数的多态
指的是函数根据参数的不同而进行不同的运算
>>> def times(x,y):return x*y>>> times(2,3)6>>> times('ray',3)'rayrayray'>>>
我们再来引用昨天的代码,所谓函数的多态,指的是函数会根据参数类型的变化,而且做出不同的运算
例如上面的代码,第一次times函数引入两个整形参数,得出的结果是整形的乘法
第二次times引入的是一个字符串一个,一个整数,得出的结果是字符串多次输出
>>> def times(x,y):return x*y>>> times('ray','1')Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> times('ray','1') File "<pyshell#3>", line 2, in times return x*yTypeError: can't multiply sequence by non-int of type 'str'>>>
如果是引入的参数不符合运算规则,python自动报错
这个时候需要注意:由于运行时才报错,所以会在编码的时候造成一定的影响,因此,在输入前必须检验数据类型,至少要符合运算规则
2.函数的多态跟对象的多态
对象的多态指的是父类引用子类对象,下面我举一个java的例子
public class Test {public static void main(String[] args) {Animal animal = new Bird();animal.say();}}class Animal {public void say() {System.out.println("i am an animal");}}class Bird extends Animal {public void say() {System.out.println("i am an bird");}}
输出结果:
i am an bird
但是我们在python里面所说的函数的多态不是上面的特性,而且python也不支持对象的多态
>>> class Animal(object):def say(self):print('i am an animal')>>> class Bird(Animal):def say(self):print('i am a bird')>>> bird = Bird()>>> bird.say()i am a bird>>>
由于python在运行的时候自动根据类型Bird赋值给bird,bird直接指向Bird这个类型的对象,所以不会出现多态的情形
总结:这一章节再次简单的说明函数的多态,以及函数多态跟对象多态之间的区别
这一章节就说到这里,谢谢大家
------------------------------------------------------------------
点击跳转零基础学python-目录
0 0
- 零基础学python-15.4 函数的多态vs对象的多态
- 零基础学python-15.3 函数的定义、调用与多态
- 零基础学python-4.3 对象的比较
- 零基础学python-9.3 对象的比较
- 零基础学python-9.4 对象的真值
- 零基础学Python之六永远强大的函数
- 零基础学python-18.1 函数的设计
- 零基础学python-18.4 函数对象:间接调用函数
- [零基础学python]网站的结构
- [零基础学Python]dict()的操作方法
- 零基础学python-4.1 python对象的简介和标准类型
- 零基础学python-18.5 函数的内建工具与函数的属性
- 零基础学python-14.3 python的文档资源:help函数
- 零基础学python-18.2 递归函数与分解递归函数的执行步骤
- 零基础学python-18.3 递归函数vs循环和递归处理任意结构
- [零基础学python]重回函数
- 零基础学python-15.2 分解函数
- 零基础学python之python的变量
- c文件操作函数
- iOS 计算文字的高度
- Java接口和抽象类的区别
- 编译hadoop的eclipse插件hadoop-eclipse-plugin-1.2.1.jar
- JDK配置环境变量方法
- 零基础学python-15.4 函数的多态vs对象的多态
- 直接插入排序,折半插入排序,希尔排序
- poj 3307 Smart Sister(数论 打表)
- 黑马程序员——java基础知识篇——>循环语句
- VS2012 & JM Software
- 2015-09-11(1)
- 第一篇博客
- Hello World!
- 解决MAC OS YOSEMITE加载内核扩展时加载/LIBKERN/KEXT错误