use*_*099 5 python abstract-class abc python-3.x
我见过两种在python. 有什么区别,分别有哪些使用场景?
from abc import ABCMeta, abstractmethod
class AbstactClass(metaclass = ABCMeta):
Run Code Online (Sandbox Code Playgroud)
和
from abc import ABC, abstractmethod
class AbstractClass2(ABC):
Run Code Online (Sandbox Code Playgroud)
blh*_*ing 27
没有实际的功能差异。该类ABC只是一个方便的类,可以帮助那些不太了解元类概念的人使代码看起来不那么混乱,如文档所述:
以 ABCMeta 作为其元类的辅助类。使用此类,可以通过简单地从 ABC 派生来创建抽象基类,从而避免有时令人困惑的元类用法
如果你看看abc.py的实现就更清楚了,它只不过是一个指定ABCMeta为其元类的空类,只是为了让它的后代可以继承该类型:
class ABC(metaclass=ABCMeta):
"""Helper class that provides a standard way to create an ABC using
inheritance.
"""
__slots__ = ()
Run Code Online (Sandbox Code Playgroud)