読みやすさを向上させるためにコードを別々のファイルに分散しようとしていますが、インポートされたファイル内で未定義のグローバル名が参照されているという問題が発生しています。呼び出されたときに必要なすべての値を意図的に関数に渡すよりも良い解決策はありますか?
私のコードは現在次のようなものです:
#foo.py
import bar
def main():
a = 1
b = bar.Bar()
while True:
a += 1
b.incr()
print a
print b.c
if __name__ == '__main__':
main()
#END foo.py
-
#bar.py
class Bar:
def __init__(self):
self.c = 0
def incr(self):
self.c += a
#END bar.py
NameErrorが発生します:グローバル名'a'が定義されていません。main()を次のように書き直す必要がありますか?
def main():
b = new bar.Bar()
while True:
a += 1
b.incr(a)
print a
print b.c
そして、incr()を次のように書き直します。
def incr(self,a):
c += a
それとももっと良い方法はありますか?
ちなみに、上記のコードは大幅に抽象化されています。実際のコードには、いくつかの大きな辞書を含む、いくつかのタイプの多くの変数を渡す非常に多くのクラスと関数が含まれています。
前もって感謝します!