我在 python
中看到了两种定义抽象类的方法.有什么区别,分别有哪些使用场景?
from abc import ABCMeta, abstractmethod
class AbstactClass(metaclass = ABCMeta):
和from abc import ABC, abstractmethod
class AbstractClass2(ABC):
最佳答案
没有实际的功能差异。 ABC
class 只是一个方便的类,以帮助那些不太了解元类概念的人使代码看起来不那么困惑,如 documentation状态:
A helper class that has ABCMeta as its metaclass. With this class, an abstract base class can be created by simply deriving from ABC avoiding sometimes confusing metaclass usage
如果你看一下 abc.py 的实现就更清楚了,它只不过是一个指定
ABCMeta
的空类作为它的元类,只是为了它的后代可以继承类型:class ABC(metaclass=ABCMeta):
"""Helper class that provides a standard way to create an ABC using
inheritance.
"""
__slots__ = ()
关于python - 抽象类(元类=ABCMeta)和抽象类(ABC)之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68569239/