抽象类是相关类的蓝图。它不能被实例化,只能通过继承访问。继承抽象类的子类需要实现其抽象方法。否则,编译器将标记错误。
抽象方法是没有实现的方法。抽象类可以有抽象方法或具体(普通)方法。
Python 不直接支持抽象方法,但您可以通过abc (抽象基类)模块访问它们。
在 Python 中使用 abc 模块
要在 Python 中定义抽象类,您需要导入abc 模块。
请参阅下面的示例:
from abc import ABC
class AbstractClassName(ABC):
pass
注意关键字pass 。此关键字用于代表空代码。忽略它会导致编译错误。
类定义、方法定义、循环和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 阅读清单上的下一个应该是异常处理。