python递归类包含和实例化

10 浏览
0 Comments

python递归类包含和实例化

我想导入位于名为some-dir/的文件夹中,并且以class*.py命名的类,并最终实例化它们。在文件夹中查找、导入类并实例化它们的最佳方法是什么?

0
0 Comments

这段代码中的问题是在循环中使用了递归的类引用和实例化。问题的根本原因是在循环中通过字符串拼接方式导入模块并实例化类,这种方式会导致类的递归引用和实例化出现错误。

解决这个问题的方法是避免在循环中使用字符串拼接方式导入模块和实例化类。可以考虑使用其他的方式来处理这个需求。

以下是修改后的代码示例:

import os
#get files
files = os.listdir("some-dir/")
classes = []
for f in files:
   #find python modules in file listing
   if f.endswith(".py"):
      #remove file extension
      module_name = os.path.splitext(f)[0]
      
      #import module
      module = __import__(module_name)
      
      #instantiate class
      class_instance = getattr(module, module_name)()
      
      #add class instance to the list
      classes.append(class_instance)

修改后的代码使用`__import__`函数导入模块,并使用`getattr`函数获取模块中的类实例。这样可以避免字符串拼接导致的问题,并正确地实例化类。

希望这个解决方案能帮助你朝着正确的方向前进。不喜欢使用`exec()`函数的方式,抱歉。

0