多态性是面向对象编程中的一个核心概念,它允许我们用同一接口调用不同的操作。在这个教程中,我们将通过视频和代码示例来深入探讨 Python 中的多态性。

什么是多态性?

多态性(Polymorphism)这个词来源于希腊语,意思是“多种形式”。在编程中,它指的是同一个接口可以用于不同的数据类型或对象。在 Python 中,多态性通常与继承和接口(抽象类)一起使用。

多态性示例

假设我们有一个基类 Animal 和两个派生类 DogCat。每个类都有一个 make_sound 方法。

class Animal:
    def make_sound(self):
        pass

class Dog(Animal):
    def make_sound(self):
        return "汪汪!"

class Cat(Animal):
    def make_sound(self):
        return "喵喵!"

现在,我们可以创建一个 Animal 类型的列表,并添加 DogCat 对象:

animals = [Dog(), Cat()]

然后,我们可以遍历这个列表并调用 make_sound 方法:

for animal in animals:
    print(animal.make_sound())

输出结果将是:

汪汪!
喵喵!

这里,make_sound 方法在不同的对象上有不同的实现,这就是多态性的体现。

多态性与接口

在 Python 中,我们可以使用抽象基类(abc 模块)来定义接口。以下是一个使用接口的例子:

from abc import ABC, abstractmethod

class Animal(ABC):
    @abstractmethod
    def make_sound(self):
        pass

class Dog(Animal):
    def make_sound(self):
        return "汪汪!"

class Cat(Animal):
    def make_sound(self):
        return "喵喵!"

在这个例子中,Animal 类是一个抽象基类,它定义了一个抽象方法 make_sound。任何继承自 Animal 的类都必须实现这个方法。

总结

多态性是面向对象编程中的一个强大工具,它允许我们编写更加灵活和可扩展的代码。在 Python 中,多态性通常与继承和接口一起使用。

Python 多态性