私はオブジェクトの静的コンテナとして扱いたいモジュールを作っています。これらのオブジェクトは、私が定義したクラス型です。私はこのモジュールをインポートし、その中のオブジェクトをループすることができます。ここで私が何を意味するかを説明するいくつかのコードは次のとおりです。Pythonでモジュールをiterableにすることはできますか?
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
ですこれはPythonで行うことができますか?または、example
パッケージ内からリストをインポートする必要がありますか?
example.py
objects = (instanceA, instanceB, instanceC)
、その後
import example
for e in example.objects:
# do stuff with e
2番目の解決策は確実に機能します。なぜそれを使用しない? – mdurant
または何らかの理由でそのバージョンが気に入らなければ、同等の 'from example import objects; '... –
イテレーションのための適切なAPIを持つsys.modulesにオブジェクトを埋め込むと、おそらくそれを行うことができます。 'ModuleType.'から派生する必要があるかどうか分かりません。 – schlenk