Python支持多态和动态类型,多态是指相同的方法在不同的实例中的行为可能不同。类型匹配是指在运行时匹配函数参数和对象类型。
在Python中实现多态可以使用继承和方法重写。父类提供了一个方法,在子类中根据需要进行修改或重写。调用方法时,会根据所传递的对象的实际类型来确定调用哪个方法。
示例1:
class Shape:
def area(self):
pass
class Rectangle(Shape):
def __init__(self, l, w):
self.length = l
self.width = w
def area(self):
return self.length * self.width
class Circle(Shape):
def __init__(self, r):
self.radius = r
def area(self):
return 3.14 * self.radius * self.radius
shapes = [Rectangle(2, 3), Circle(5)]
for shape in shapes:
print(shape.area())
在这个示例中,Shape类定义了一个名为area()的方法,并且包含Rectangle和Circle两个子类。这两个子类分别重写了area()方法。在主程序中,我们创建了一个包含两个不同类型的形状对象的列表,并对每个对象调用area()方法。我们不需要知道每个对象实际的类型,因为Python会自动调用正确的方法。
示例2:
def calculate_sum(num_list):
s = 0
for i in num_list:
s += i
return s
print(calculate_sum([1, 2, 3])) # 6
print(calculate_sum((4, 5, 6))) # 15
print(calculate_sum({7, 8, 9})) # 24
在这个示例中,我们定义了一个函数calculate_sum(),它接受一个数字列表作为参数,然后计算列表中所有数字的和并返回结果。我们可以传递不同类型的对象作为参数,并且函数会自动匹配对象的类型,并返回正确的结果。
总的来说,Python中的多态和类型匹配使得代码变得更加灵活并且容易维护。我们可以重用相同的代码来处理不同的对象类型,实现更加高效的程序。