2

我有一个工作模块,其中包含一个工厂函数、一个超类和两个子类。实际模块在这里

我将工厂拆分为自己的文件,并将两个子类放入 commands/ 目录中,这样我就可以解决由于在包含我的 super 的模块中导入我的子类而引起的递归问题。

就在我认为我已正确导入所有内容时,当我尝试时,工厂被一个空的子类列表卡住:

for cls in Command.__subclasses__():
4

1 回答 1

0

它不漂亮,但它有效。我想要一种更优雅的方式将字符串转换为类名。循环遍历 __subclasses__ 确实太挑剔了。我只是不太了解元类来应用它。

from commands.shVersionCmd import shVersionCmd
from commands.shVRFCmd import shVRFCmd
def CommandFactory(commandnode):
    if commandnode.attrib['name'] == 'shVersionCmd': return shVersionCmd(commandnode)        
    if commandnode.attrib['name'] == 'shVRFCmd': return shVRFCmd(commandnode)
于 2013-02-23T13:04:18.527 回答