将子类注册到 __init_subclass__ 内的 ABC 类不能完全工作

2024-02-16

我想要实现的是将一种类型注册为所有其他类型的子类型。由于某些其他原因我无法使用元类,所以__init_subclass__似乎是一个合理的选择。

我有这样的代码

from abc import ABC


class AnyData(ABC):
    pass

class BaseData(ABC):
    def __init_subclass__(cls, **kwargs):
        super().__init_subclass__(**kwargs)
        cls.register(AnyData)

class DataA(BaseData):
    pass

However issubclass(AnyData, DataA)回报False, 直到DataA是子类化的,比如

class DataB(DataA):
    pass

Now, issubclass(AnyData, DataA)回报True and issubclass(AnyData, DataB)回报False

请帮忙解释一下为什么会出现这样的情况?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将子类注册到 __init_subclass__ 内的 ABC 类不能完全工作 的相关文章

随机推荐