registry
util.registry
클래스 레지스트리를 가질 수 있도록 하는 추상 클래스를 정의합니다.
Registerable
Bases: ABC
Abstract class for base module classes which have class registry.
Usage
from __future__ import annotations
from typing import Dict
from .SaigeToolkit.SaigeToolkit.util.registry import Registerable
class BaseModule(Registerable):
registry: Dict[str, BaseModule]
class ImplementedModuleA(BaseModule):
pass
class ImplementedModuleB(BaseModule):
pass
print(BaseModule.registry)
# output
# {'ImplementedModuleA': __main__.ImplementedModuleA,
# 'ImplementedModuleB': __main__.ImplementedModuleB}
If you want use arbitrary key for registering,
class BaseModule2(Registerable):
registry: Dict[str, BaseModule2]
class ImplementedModule2A(BaseModule2, key="module_2_a"):
pass
print(BaseModule2.registry)
# output
# {'module_2_a': __main__.ImplementedModule2A}
or, define "init_subclass" again.