我有一組類,它們代表不同的「工具」,每個工具都有一個ID鍵,一個描述,一個標題和一些其他常量。這些都是從「GenericTool」類中分類的。在導入時在Python中註冊對象成員
我想有一種方法來填充字典,鍵入所有子類的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__()
中的代碼,但是th似乎會影響類的運行時創建,而我只關心一次,即第一次導入模塊時。
「*但不必維護中央字典。*」:爲什麼? – Blender 2013-04-28 22:25:14
因爲在課堂上有類特定的信息似乎更加簡潔,而不必照顧完全解耦的列表,這可能很容易失去同步。對於一些課程,當然可以手工完成,但是數百或更多的課程並不能很好地進行擴展,我可以設想一些有點像裝飾器,這些信息是自動收集的。 – Inductiveload 2013-04-28 22:29:45