Python 使用抽象类定义接口

Document 对象参考手册 Python3 实例

在 Python 中,抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类通常用于定义接口,即一组方法的声明,而不提供具体的实现。子类必须实现这些方法才能被实例化。

Python 提供了 abc 模块来创建抽象类。我们可以使用 ABC 类和 abstractmethod 装饰器来定义抽象方法。

下面是一个使用抽象类定义接口的示例:

实例

from abc import ABC, abstractmethod

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

    @abstractmethod
    def move(self):
        pass

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

    def move(self):
        return "Running on four legs"

class Bird(Animal):
    def make_sound(self):
        return "Chirp!"

    def move(self):
        return "Flying in the sky"

# 实例化子类
dog = Dog()
bird = Bird()

print(dog.make_sound())  # 输出: Woof!
print(dog.move())        # 输出: Running on four legs

print(bird.make_sound()) # 输出: Chirp!
print(bird.move())       # 输出: Flying in the sky

代码解析:

  1. Animal 是一个抽象类,继承自 ABC。它定义了两个抽象方法 make_soundmove,这些方法没有具体的实现。
  2. DogBirdAnimal 的子类,它们必须实现 make_soundmove 方法,否则会抛出 TypeError
  3. Dog 类实现了 make_sound 方法,返回 "Woof!",并实现了 move 方法,返回 "Running on four legs"。
  4. Bird 类实现了 make_sound 方法,返回 "Chirp!",并实现了 move 方法,返回 "Flying in the sky"。
  5. 最后,我们实例化了 DogBird 类,并调用了它们的方法。

输出结果:

Woof!
Running on four legs
Chirp!
Flying in the sky

Document 对象参考手册 Python3 实例