我正在创建一个模块,我想将其视为对象的静态容器.这些对象属于我定义的类类型.我希望能够导入此模块,然后循环遍历其中的对象.以下是一些解释我的意思的代码:
example.py
class MyExampleClass(object): def __init__(self,var1,var2,var3): self.var1 = var1 self.var2 = var2 self.var3 = var3 self.var4 = var4 instanceA = MyExampleClass(1,2,3,4) instanceB = MyExampleClass(4,6,7) instanceC = MyExampleClass(5,4,5) # something like this def __iter__(): return (instanceA,instanceB,instanceC)
然后我希望能够导入它并像枚举一样使用它:
import example for e in example: # do stuff with e
这可以用Python做吗?或者我是否必须从示例包中导入列表?
example.py
objects = (instanceA,instanceC)
然后
import example for e in example.objects: # do stuff with e
解决方法
您可以通过在模块中定义根类并使用该类的实例替换模块来实现此目的.这是一个例子:
class ModuleClass(object): __init__(self): self.instanceA = MyExampleClass(1,4) ... __iter__(self): # Your iterator logic here # and then in the same module code sys.modules[__name__] = ModuleClass()
那么你可以做你想要的,因为当你导入该模块时,它实际上是你的自定义可迭代ModuleClass的一个实例:
import example for e in example: # do stuff with e