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
在上面的例子中,我们通过修改A类的magic函数并将结果加2来重载 +
运算符。
相关文章
列出 Python 的事件相关包
发布时间:2023/07/03 浏览次数:190 分类:Python
-
Python 编程语言具有包,它们是模块的集合。 本文将列出 Python 编程语言的事件相关包。列出 Python 的事件相关包 不同的 Python 包使用不同的事件术语。
用 Python 创建 turtle 图形
发布时间:2023/07/02 浏览次数:139 分类:Python
-
本篇文章将讨论 Python 中海龟图形的一些示例。在 Python 中创建图形输出屏幕 我们从创建输出屏幕开始。 turtle.getscreen() 方法初始化一个变量为屏幕,然后弹出一个屏幕。
Python 猜谜游戏
发布时间:2023/07/02 浏览次数:90 分类:Python
-
本篇文章将介绍用 Python 开发一个简单的猜数字游戏的过程。猜谜游戏机制 我们正在尝试开发一款游戏,从用户处获取上限和下限,生成该范围内的随机数,要求用户猜测该数字,并计算用户
Python 中的 Gzip 解压
发布时间:2023/07/02 浏览次数:56 分类:Python
-
我们将介绍Python中的gzip解压。 我们还将介绍如何使用 gzip 解压缩来解压缩压缩内容。Python 中的 Gzip 解压 Python 中构建了许多用于压缩和解压缩目的的库,但我们将介绍 Gzip 库。
在 Python 中创建奇数列表
发布时间:2023/07/02 浏览次数:114 分类:Python
-
我们将在本文中介绍在 Python 中创建奇数列表的不同方法。Python 中的奇数 定义奇数有两种方法,第一种是整数不能被 2 整除时的情况。另一种是整数除以 2 时余数为 1 的情况。
在 Python 中使用 Tesseract 从图像中读取文本
发布时间:2023/07/02 浏览次数:110 分类:Python
-
我们将介绍如何使用 Python 中的 Tesseract 创建一个可以从图像中读取文本的程序。Python 中的超正方体 当我们使用需要从图像中读取文本的功能的系统时,我们会使用 Python 中的 Tesseract。
Python 中的队列实现
发布时间:2023/07/02 浏览次数:63 分类:Python
-
我们在 Python 中使用队列来执行先进先出 (FIFO) 操作。 本文将讨论 Python 中队列实现的三种不同方法。Python 中的队列实现 在队列中,我们可以执行不同的操作。
Python 行列式
发布时间:2023/07/02 浏览次数:129 分类:Python
-
矩阵的行列式是仅与方阵相关的标量。 对于方阵 [[1,2], [3,4]],行列式计算为 (1x4) - (2x3)。在Python中使用numpy.linalg.det()计算矩阵的行列式
Python 中的 Pexpect
发布时间:2023/07/02 浏览次数:157 分类:Python
-
我们将通过示例介绍Python中的Pexpect。Python 中的 Pexpect Python 是一种非常流行的语言,用于数据科学和机器学习。 它是一种非常强大的语言,因为 Python 具有可用于不同目的的内置库。