0

2つのpyファイルがあります。testというパッケージ内のa.pyとb.py(has __init__.py

以下のa.pyで定義されている属性self.itemsにアクセスしたい

import b

class Window(object):
    def __init__(self):
        self.items={'Magenta':'mag','Grey':'gre','Red':'red'}
    def getMats():
        newobj=b.BAR()
        selected = newobj.type_of_mats[1]

別のpyファイルb.py[below]から、b.pyにモジュールをインポートしました。

import a

#now 

obj = a.Window()
print obj.items['Magenta']
class BAR(object):
    def myMat(self):
        type_of_mats=['ground', 'corridor', 'Outdoor']

上記はmagを印刷するべきではありませんか、それとも他にどのようにすべきですか?

4

3 に答える 3

1

循環インポート(a)および(b)に関するこれらのstackoverflowの質問を参照してください。使用しているコンパイラ/インタプリタによると思います。私の場合、あなたのコードは再帰の深さを超えてくれませんが、これは

それが役に立てば幸い。

于 2012-12-10T10:05:51.310 に答える
0

循環インポート。a.pyインポートbして再度b.pyインポートaします。鶏が先か卵が先か!そして、Pythonはそれを解決できないので、最大再帰深度について警告します(aからb、a、b、aへとジャンプし続けます...)。

インポートが一方向のみになるように修正する必要があります。

于 2012-12-10T10:00:05.530 に答える
0

循環依存関係があります:aはインポートb中です。これは次にインポート中aです。これらの2つのインポートはモジュールレベルで行われるため、完了することはできません。

あなたの場合、メソッドに移動することで修正できimport bますgetMats

于 2012-12-10T10:00:22.357 に答える