【发布时间】:2021-09-09 02:27:28
【问题描述】:
当在 python 中定义一个抽象元类并像这样实例化它时:
from abc import ABC, abstractmethod
class AbstractMetaClass(type, ABC):
@abstractmethod
def func(self):
pass
class MyClass(metaclass=AbstractMetaClass):
pass
我本以为我的代码会失败,因为 MyClass 是抽象类的一个实例。相反,它运行没有问题。 发生了什么,我该怎么做?
【问题讨论】:
-
你能在这里澄清你的用例吗?为什么需要抽象元类?
-
你想达到什么目的?
abc模块已经提供了ABCMeta元类来创建抽象类。 -
我认为实例化元类的过程绕过了
ABCMeta用来强制覆盖抽象方法的机制。它们只是不适合一起工作。 -
@chepner “不适合一起工作”是这里的关键词。
标签: python python-3.x abstract-class metaclass