2016-08-16 17 views
0

それは単純ですが、私は解決策を見つけることができませんでした。Python外部クラス

以下の問題は、私が思いつく最も簡単な例で表示しています。

(私のクラスは、より複雑な静かです;))インポートと一致しません

ファイルA.py

import os, sys 
import B 
from B import * 
class _A(): 
    def __init__(self,someVars): 
     self.someVars = someVars 
    def run(self): 
     print self.someVars 

someVars = 'jdoe' 
B._B(someVars) 

ファイルB.py

import A 
from A import _A 
class _B(): 
    def __init__(self,someVars): 
     self.someVars = someVars 
    def run(self): 
     A._A(self.someVars) 

import A - >コールバック: -

from A import * 

しかし、論理的な機能を2回実行している私が行うときにのみ動作します_A

を見つけることができません。すべて

+0

これは、インポートAが下線付きのクラスをインポートしないためです。 '_A'から直接' _A'を呼び出すことができる 'A import_A'を実行するときは、' _A'の代わりに 'A._A'を呼び出しています。 'from A import *'を使わないでください。常に 'import A'か' A import from A 'を使います。どちらも必要ではありません。 [Underscored Classのインポート](http://stackoverflow.com/questions/551038/private-implementation-class-in-python) [インポートからインポートから](http://stackoverflow.com/questions/710551/import-module-or-from-module-import) –

答えて

0

おかげで、最初のimport Xfrom X import Yする必要はありません。 Yが必要な場合は(Y*)、ちょうどfrom X import Yとなります。これは2回の実行の原因となる可能性があります。

また、モジュール間に循環的な依存関係があるのはなぜですか?A -> B, B -> A?たぶんそれらは1つのファイルにあるはずですか?インポートエラーに直面しているため、循環依存の

0

、あなたにあなたの仕事を続けることができます。

ファイルA.py:

import os, sys 
#Below two import lines does cyclic dependency between file A and B which is wrong and will give import error, 
#commenting below two lines will resolve your import error 
#import B 
#from B import * 
class _A(): 
    def __init__(self,someVars): 
     self.someVars = someVars 
    def run(self): 
     print self.someVars 

someVars = 'jdoe' 
#B._B(someVars) #comment and respective logic should be moved in B file 

また、あなたはimport Afrom A import _Aを使用する必要がありますどちらかと後で使用する場合は、_A(self.someVars)A._A(self.someVars))以外のクラスを直接呼び出す必要があります。この呼び出し規約は、以前のインポートスタイル(import A)に使用されます。クラスとモジュールの外部使用の理解を深めるために、ref次のリンク:https://docs.python.org/3/tutorial/modules.html

関連する問題