Python中的多态是指不同的对象可以对同一方法调用做出不同的响应。这是面向对象编程的三大特性之一,其他两个是封装和继承。多态允许我们编写出更加通用和可复用的代码,因为我们可以将子类对象当作父类对象来使用,而具体的实现细节则交由子类来定义。
多态的关键点:
继承:
多态通常发生在子类继承父类时。
重写:
子类可以重写(覆盖)父类的方法,以提供不同的行为。
向上转型:
子类实例可以当作父类实例来使用,这允许在父类的方法中调用子类特有的方法。
示例:
class Animal:
def talk(self):
pass
class Cat(Animal):
def talk(self):
print('喵喵喵')
class Dog(Animal):
def talk(self):
print('汪汪汪')
def animal_talk(animal):
animal.talk()
cat = Cat()
dog = Dog()
animal_talk(cat) 输出:喵喵喵
animal_talk(dog) 输出:汪汪汪
在这个例子中,`animal_talk`函数接受一个`Animal`类型的参数,并调用其`talk`方法。由于`Cat`和`Dog`都是`Animal`的子类,并且重写了`talk`方法,所以可以对同一个函数调用产生不同的行为。
多态使得代码更加灵活和可扩展,因为可以在不修改调用多态方法的代码的情况下,增加新的子类来实现不同的行为。