Я делаю модуль, который я хочу рассматривать как статический контейнер объектов. Эти объекты имеют тип класса, который я определил. Я хочу, чтобы иметь возможность импортировать этот модуль, а затем цикл через объекты внутри. Вот какой-то код объяснить, что я имею в виду:Можно ли сделать модуль итерабельным в Python?
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, 3, 6, 7)
instanceC = MyExampleClass(5, 3, 4, 5)
# something like this
def __iter__():
return (instanceA, instanceB, instanceC)
Тогда я хотел бы иметь возможность импортировать это и использовать его как перечисление:
import example
for e in example:
# do stuff with e
Is это можно сделать в Python? Или мне нужно будет импортировать список из пакета example
?
example.py
objects = (instanceA, instanceB, instanceC)
, а затем
import example
for e in example.objects:
# do stuff with e
Второе решение, безусловно, работает. Почему бы не использовать его? – mdurant
, или если вам почему-то не нравится эта версия, эквивалент 'из экземпляра объектов импорта; для e в объектах: '... –
Возможно, вы можете сделать это, если вы нанесете некоторый объект в sys.modules, у которого есть правильный API для итерации. Не уверен, что это должно быть получено из 'ModuleType.' – schlenk