一文带你了解python中的多态性
多态性是 OOP 的一个特征,这意味着一个名称可以具有不同的功能。 单个实体可以采取不同的形式。
本篇文章将介绍如何在 Python 中实现多态性。
Python 中的多态性
理解这一点的最佳方法是使用 len() 函数。 对于不同的对象,该函数有不同的解释。
对于列表,它将返回存在的总元素;对于字符串,它将返回存在的总字符。
代码:
lst = ['fql', 'jiyik'] s = 'fqljiyik' print(len(lst), len(s))
输出:
2 8
说明 Python 中多态性的另一个常见功能是 + 运算符。 该运算符可以在 Python 中执行两个数字之间的加法。
但是,当与字符串一起使用时,它充当连接运算符来组合两个字符串。
代码:
a = 5 + 6 s = 'fql' + 'jiyik' print(a, s)
输出:
11 fqljiyik
在 Python 中使用类方法实现多态性
Python 中的一切都是对象,并且属于某个类。 这些方法与类的对象相关联。
这就是为什么 + 运算符和 len() 函数对不同的对象执行不同的功能。 + 运算符调用为不同对象定义不同的魔术函数。
我们可以创建我们的类并实现这一目标。 两个类可以具有相同名称的函数,但具有不同的用途和不同的定义。
代码:
class A: def fun(self): print("Class A") class B: def fun(self): print("Class B") ob1 = A() ob2 = B() for i in (ob1, ob2): i.fun()
输出:
Class A
Class B
在 Python 中使用方法重写实现多态性
Python 中的多态性也与类继承相关。 继承是指一个类访问另一个类的功能。
一个类及其子类可能包含同名的函数,我们可以在Python中使用函数重写。 使用方法重写,我们可以在子类中实现已经定义的方法。
我们可以根据子类重新定义函数。
代码:
class A: def fun(self): print("Class A") class B(A): def fun(self): print("Class B") ob1 = A() ob2 = B() for i in (ob1, ob2): i.fun()
输出:
Class A
Class B
在上面的代码示例中,类 B 继承自类 A,但 fun() 方法在类 B 中被重写,并根据类进行定义。
我们还可以在重写函数中从 A 类访问函数 fun()。
代码:
class A: def fun(self): print("Class A") class B(A): def fun(self): A.fun(self) print("Class B") ob2 = B() ob2.fun()
输出:
Class A
Class B
在 Python 中使用函数和运算符重载实现多态性
函数重载是实现多态性的一个有趣的功能。 Python 中没有此功能,Python 中将调用最近定义的函数。
Python 中可以重载运算符。 我们知道,不同的运算符可以根据对象类型执行不同的功能,使用 + 运算符可以清楚地看出。
发生这种情况是因为每当使用运算符时它都会在内部调用魔术函数。 例如,+ 运算符在内部调用 __add__ 方法。
这个神奇的函数在其名称前后都有双下划线。 魔法函数并不意味着直接调用,但我们可以为不同的类定义它们来修改不同运算符的行为。
代码:
class A: def __init__(self, a): self.a = a def __add__(self, o): return self.a + o.a + 2 ob1 = A(5) ob2 = A(4) print(ob1+ob2)
输出:
11
到此这篇关于一文带你了解python中的多态性的文章就介绍到这了,更多相关python多态性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python提高运行速度工具之Pandarallel的使用教程
为了提高运行速度,我们一般会采用多进程的方式。而常见的方案对于普通python玩家来说都不是特别友好,怎样才能算作一个友好的并行处理方案?本文就来和大家讲讲pandarallel的使用2022-09-09Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
这篇文章主要介绍了Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件,封装函数的方法,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下2019-09-09Google colab中从kaggle中接入数据的操作方法
这篇文章主要介绍了Google colab中如何从kaggle中接入数据,本文涉及到两大平台内容,所以我默认你已经拥有了,并且使用过了一段时间的google账号和kaggle账号,需要的朋友可以参考下2024-03-03
最新评论