gpt4 book ai didi

python - 抽象类(元类=ABCMeta)和抽象类(ABC)之间的区别

转载 作者:行者123 更新时间:2023-12-04 11:25:43 25 4
gpt4 key购买 nike

我在 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, anabstract base class can be created by simply deriving from ABCavoiding 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com