Python 使用抽象类定义接口
在 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
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
代码解析:
Animal
是一个抽象类,继承自ABC
。它定义了两个抽象方法make_sound
和move
,这些方法没有具体的实现。Dog
和Bird
是Animal
的子类,它们必须实现make_sound
和move
方法,否则会抛出TypeError
。Dog
类实现了make_sound
方法,返回 "Woof!",并实现了move
方法,返回 "Running on four legs"。Bird
类实现了make_sound
方法,返回 "Chirp!",并实现了move
方法,返回 "Flying in the sky"。- 最后,我们实例化了
Dog
和Bird
类,并调用了它们的方法。
输出结果:
Woof! Running on four legs Chirp! Flying in the sky
点我分享笔记