推荐答案
// www.javascriptcn.com code example
from abc import ABC, abstractmethod
class MyAbstractClass(ABC):
@abstractmethod
def my_abstract_method(self):
pass
def my_concrete_method(self):
print("This is a concrete method.")本题详细解读
1. 导入 abc 模块
要创建抽象基类,首先需要从 abc 模块中导入 ABC 类和 abstractmethod 装饰器。
from abc import ABC, abstractmethod
2. 定义抽象基类
通过继承 ABC 类来定义一个抽象基类。ABC 是 Python 中用于创建抽象基类的基类。
class MyAbstractClass(ABC):
3. 使用 @abstractmethod 装饰器
在抽象基类中,使用 @abstractmethod 装饰器来标记抽象方法。抽象方法没有具体的实现,子类必须重写这些方法。
@abstractmethod
def my_abstract_method(self):
pass4. 定义具体方法
抽象基类中也可以包含具体方法,这些方法可以有默认的实现,子类可以选择是否重写它们。
def my_concrete_method(self):
print("This is a concrete method.")5. 子类实现抽象方法
任何继承自抽象基类的子类都必须实现所有抽象方法,否则在实例化时会抛出 TypeError。
class MyConcreteClass(MyAbstractClass):
def my_abstract_method(self):
print("Implemented abstract method.")6. 实例化子类
只有实现了所有抽象方法的子类才能被实例化。
obj = MyConcreteClass() obj.my_abstract_method() # 输出: Implemented abstract method. obj.my_concrete_method() # 输出: This is a concrete method.
通过这种方式,abc 模块提供了一种机制来定义抽象基类,并确保子类实现了必要的抽象方法。