我正在尝试构建一个可模块化的应用程序,因此我需要一种方法来允许我在不修改主应用程序的情况下创建新模块。为此,我正在准备允许我从文件夹中导入所有模块的模块系统,并且我想选择要使用的模块,例如,通过使用类属性。
模块:
topology_O.py
:
class Topology(object):
def __init__(self):
self.name = 'O'
self.version = 0.1
def __str__(self):
string = "Topology: " + self.name
string += "Version: " + str(self.version)
return string
topology_H.py
:
class Topology(object):
def __init__(self):
self.name = 'H'
self.version = 0.1
def __str__(self):
string = "Topology: " + self.name
string += "\n > Version: " + str(self.version)
return string
我想像这样使用它们:
myTopology = some_topology_thing('O')
print myTopology
# Topology: O
# > Version: 0.1
myTopology = some_topology_thing('H')
print myTopology
# Topology: H
# > Version: 0.1
所以模块将被name
选择和使用。
最佳答案
importlib可以在这里提供帮助:
import importlib
def some_topology_thing(topo_type):
mod = importlib.import_module('topology_{}'.format(topo_type))
return mod.Topology()
关于python - 将所有模块导入一个文件夹中,并通过其属性之一使用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36631458/