Python 中的多态性

多态性意味着多种形式。在 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

猜你喜欢