Tworzę moduł, który chcę traktować jako statyczny kontener obiektów. Te obiekty są typu klasy, które zdefiniowałem. Chcę móc zaimportować ten moduł, a następnie zapętlić obiekty wewnątrz. Oto kod wyjaśniając o co mi chodzi:Czy możliwe jest wykonanie modułu w języku 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)
Następnie chciałbym, aby móc importować ten i używać go jak ENUM:
import example
for e in example:
# do stuff with e
Is to można zrobić w Pythonie? Czy będę musiał zaimportować listę z pakietu example
?
example.py
objects = (instanceA, instanceB, instanceC)
a następnie
import example
for e in example.objects:
# do stuff with e
Drugie rozwiązanie na pewno działa. Dlaczego jej nie użyć? – mdurant
lub jeśli nie podoba ci się ta wersja z jakiegoś powodu, odpowiednik 'z przykładu importuje obiekty; dla e w obiektach: '... –
Prawdopodobnie możesz to zrobić, jeśli wpychasz jakiś obiekt do sys.modules, który ma odpowiedni interfejs API dla iteracji. Nie jestem pewien, czy musiałby on pochodzić z 'ModuleType'. – schlenk