是否有可能在Python中使模块可迭代?
发布时间:2020-05-23 10:41:29 所属栏目:Python 来源:互联网
导读:我正在创建一个模块,我想将其视为对象的静态容器.这些对象属于我定义的类类型.我希望能够导入此模块,然后循环遍历其中的对象.以下是一些解释我的意思的代码: example.py class MyExampleClass(object): def __init__(self, var1, var2, var3): self.var1 = v
|
我正在创建一个模块,我想将其视为对象的静态容器.这些对象属于我定义的类类型.我希望能够导入此模块,然后循环遍历其中的对象.以下是一些解释我的意思的代码: 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 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
