python学习手册中的python多态示例代码


下面是一个Python中多态的示例代码。多态是面向对象编程中的一个重要概念,它允许我们使用同一个接口(方法)来操作不同的对象,而这些对象在内部实现上可能是不同的。


# 定义一个基类
class Animal:
    def speak(self):
        raise NotImplementedError("子类必须实现这个方法")

# 定义两个继承自Animal的子类
class Dog(Animal):
    def speak(self):
        return "汪汪!"

class Cat(Animal):
    def speak(self):
        return "喵喵~"

# 使用多态
def animal_sound(animal):
    print(animal.speak())

# 创建Dog和Cat的实例
dog = Dog()
cat = Cat()

# 调用同一个函数,传入不同类型的对象
animal_sound(dog)  # 输出: 汪汪!
animal_sound(cat)  # 输出: 喵喵~

在这个示例中,`Animal` 类是一个基类,它定义了一个 `speak` 方法,但该方法在基类中被声明为 `NotImplementedError`,意味着子类必须实现这个方法。`Dog` 和 `Cat` 类都继承自 `Animal` 类,并各自实现了 `speak` 方法。

`animal_sound` 函数接收一个 `Animal` 类型的参数(这里使用了多态,因为实际可以传入任何 `Animal` 的子类实例),并调用该实例的 `speak` 方法。由于 `Dog` 和 `Cat` 都实现了 `speak` 方法,并且它们的实现方式是不同的,因此当 `animal_sound` 函数分别传入 `Dog` 和 `Cat` 的实例时,会输出不同的结果,这体现了多态的特性。