多态性意味着多种形式。在 python 中,我们可以找到具有多种形式的相同运算符或函数。它也可用于创建具有相同名称的类方法的不同类。这有助于重新使用大量代码并降低代码复杂性。正如我们将在下面的一些示例中看到的那样,多态性也与继承有关。
+ 运算符可以接受两个输入,并根据输入的内容为我们提供结果。在下面的示例中,我们可以看到整数输入如何产生整数,如果输入之一是浮点数,则结果变为浮点数。同样对于字符串,它们只是连接在一起。由于 + 运算符在 python 中的创建方式,这会自动发生。
a = 23 b = 11 c = 9.5 s1 = "Hello" s2 = "There!" print(a + b) print(type(a + b)) print(b + c) print(type (b + c)) print(s1 + s2) print(type(s1 + s2))
运行上面的代码给我们以下结果 -
输出结果
34 20.5 HelloThere!
我们还可以看到,不同的 Python 函数可以接受不同类型的输入,然后对其进行不同的处理。当我们向len()它提供一个字符串值时,它会计算其中的每个字母。但是如果我们将五个元组或字典作为输入,它会以不同的方式处理它们。
str = 'Hi There !' tup = ('Mon','Tue','wed','Thu','Fri') lst = ['Jan','Feb','Mar','Apr'] dict = {'1D':'Line','2D':'Triangle','3D':'Sphere'} print(len(str)) print(len(tup)) print(len(lst)) print(len(dict))
运行上面的代码给我们以下结果 -
输出结果
10 5 4 3
我们可以创建具有相同名称但包装在不同类名下的方法。所以我们可以不断调用相同的方法,前缀不同的类名,得到不同的结果。在下面的示例中,我们有两个类,矩形和圆形,使用相同的方法获取它们的周长和面积。
from math import pi class Rectangle: def __init__(self, length, breadth): self.l= length self.b= breadth def perimeter(self): return 2*(self.l + self.b) def area(self): returnself.l* self.b class Circle: def __init__(self, radius): self.r= radius def perimeter(self): return 2 * pi * self.r def area(self): return pi *self.r** 2 # 初始化类 rec = Rectangle(5,3) cr = Circle(4) print("矩形的边界: ",rec.perimeter()) print("矩形面积: ",rec.area()) print("圆周长: ",cr.perimeter()) print("圆圈面积: ",cr.area())
运行上面的代码给我们以下结果 -
输出结果
矩形的边界: 16 矩形面积: 15 圆周长: 25.132741228718345 圆圈面积: 50.26548245743669