Python 中的抽象类:初学者指南

抽象类是相关类的蓝图。它不能被实例化,只能通过继承访问。继承抽象类的子类需要实现其抽象方法。否则,编译器将标记错误。

抽象方法是没有实现的方法。抽象类可以有抽象方法或具体(普通)方法。

Python 不直接支持抽象方法,但您可以通过abc (抽象基类)模块访问它们。

在 Python 中使用 abc 模块

要在 Python 中定义抽象类,您需要导入abc 模块。

请参阅下面的示例:

 from abc import ABC
class AbstractClassName(ABC):
pass

注意关键字pass 。此关键字用于代表空代码。忽略它会导致编译错误。

相关:朱莉娅会竞标 Python 的王位吗?

类定义、方法定义、循环和if语句需要代码实现。因此,将它们排除在外会导致编译错误。为避免这种情况,请使用pass替换空代码。

要在 Python 中定义抽象方法,请使用@abstractmethod装饰器:

 from abc import ABC, abstractmethod
class AbstractClassName(ABC):
@abstractmethod
def abstractMethod(self):
pass

在这一点上,最好提一下——与 Java 不同——Python 中的抽象方法可以有一个实现。这个实现可以使用super()方法在覆盖方法中访问。

 import abc
class AbstractClass(ABC):
def __init__(self, value):
self.value = value
super().__init__()
@abc.abstractmethod
def some_action(self):
print("This is the parent implementation.")
class MySubclass(AbstractClassExample):
def some_action(self):
super().some_action()
print("This is the subclass implementation. ")
x = MySubclass()
x.some_action()

有趣的是,您可以在抽象类中定义构造函数。

在第 9 行,您可以观察到@abc.abstractmethod已被用作抽象方法装饰器。这是不同于前一种形式的另一种方式。另请注意,第 1 行 ( import abc ) 比您使用的前第 1 行 import 短。

这都是一个选择的问题。尽管如此,许多人可能会发现第二种方法更短。

Python 中的异常处理

请注意,上面给出的代码示例中无法捕获错误。错误经常发生,并且有一种可靠的方法来获取它们可以改变游戏规则。

这些破坏正常程序流程的事件称为“异常”,管理它们称为“异常处理”。你的 Python 阅读清单上的下一个应该是异常处理。