具有任意有效负载的对象的基于decorator的注册表
decorated-registr的Python项目详细描述
装潢登记处
Python通用注册表的实现。在
允许您无缝地创建测试、模块、dsl和rpc的注册。在
支持参数和完全类型化。在
示例
fromtypingimportList,Typefromdataclassesimportdataclassfromdecorated_registryimportRegistry,ConstructorPayloadFactory# framework/abstract.py@dataclassclassModuleConfig:init_priority:int=-1classModule:pass# framework/registry.pyapplication_module:Registry[ModuleConfig,Type[Module]]=Registry(payload_factory=ConstructorPayloadFactory(dict))# authentication_mod/impl.py@application_moduleclassAuthenticationModule(Module):pass# database_mod/impl.pu@application_module(init_priority=2)classDatabaseSessionModule(Module):pass# framework/app.pydefload_modules()->List[Module]:rtn=[]# ensure modules are loaded in the order given by `ModuleConfig.priority`modules_priority=sorted(application_module.items,key=lambdax:x.payload.init_priority)forxinmodules_priority:module_cls:Type[Module]=x.valuemodule=module_cls()rtn.append(module)returnrtn# framework/main.pydefmain():modules=load_modules()if__name__=='__main__':main()
- 项目
标签: