我有一组类,它们代表不同的“工具”,每个类都有一个 ID 键、一个描述、一个标题和一些其他常量。这些都是“GenericTool”类的子类。
我想有一种方法来填充字典,键入所有子类的 ID,这样我就可以在给定 ID 的情况下轻松查找常量,而无需维护中央字典。
例如,文件tools/toola.py
import generic_tool as GT
class ToolA(GT.GenericTool):
title = "Tool A"
id = "tool_a"
文件tools/toolb.py
import generic_tool as GT
class ToolB(GT.GenericTool):
title = "Tool B"
id = "tool_b"
我想最终得到这样的字典:
{ 'tool_a': {'title': 'Tool A'},
'tool_b': {'title': 'Tool B'} }
我已经研究过在超类中使用元类和代码__init__()
,但这些似乎会影响类的运行时创建,而我只关心在第一次导入模块时执行一次。