Ich mache ein Modul, das ich als statischen Container von Objekten behandeln möchte. Diese Objekte gehören zu einem von mir definierten Klassentyp. Ich möchte in der Lage sein, dieses Modul zu importieren und dann die darin enthaltenen Objekte zu durchlaufen. Hier ist ein Code zu erklären, was ich meine:Ist es möglich, ein Modul in Python iterierbar zu machen?
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)
Dann würde ich diese in der Lage sein möchte zu importieren und es wie ein Enum zu verwenden:
import example
for e in example:
# do stuff with e
Ist das ist in Python möglich? Oder muss ich eine Liste aus dem example
Paket importieren?
example.py
objects = (instanceA, instanceB, instanceC)
und dann
import example
for e in example.objects:
# do stuff with e
ersetzen Die zweite Lösung funktioniert sicherlich. Warum nicht benutzen? – mdurant
oder wenn Sie diese Version aus irgendeinem Grund nicht mögen, das Äquivalent von Beispiel importieren Objekte; für e in Objekten: '... –
Sie könnten es wahrscheinlich tun, wenn Sie ein Objekt in sys.modules stopfen, das die richtige API für die Iteration hat. Nicht sicher, ob es von 'ModuleType abgeleitet werden müsste. – schlenk