2017-06-21 7 views
2

私は最初のpythonパッケージを作成しています。事前に初期化されたオブジェクト(Python)のインポート

__init__.pyでは、モジュールからオブジェクトAppをインポートして開きます。

from app import App 
app = App() 

app.py

class App(tk.Tk): 

    def __init__(self): 
     #Create App 
     tk.Tk.__init__(self) 
     self.geometry("1000x550") 
     self.title("Game") 
     self.container = tk.Frame(self).grid() 

その後、別のモジュールgame.pyに、私はappapp__init__.pyに初期化されたときに作成app.containerにアクセスする必要があります。

私が試してみました:

from app import App 
# Does not retrieve variables 

from __init__ import app 
# Does not retrieve object 

from app import App 
app = App() 
# Intialized the object twice 
+0

ありません」変数を検索する "という意味ですか?また、なぜ '__init__'に' App'のインスタンスを作成していますか?それはあなたが物事をどのようにして行うのか通常はありません –

+0

@BryanOakley 'App.container'を呼び出そうとすると、それは存在しないというエラーです。これも私の最初のパッケージなので、普通の方法に慣れていません – JKonowitz

+0

'App.container'はクラス変数ではなくインスタンス変数なので存在しません。 'container'にアクセスするには' App()。container'を実行する必要があります。 –

答えて

1

はあなたの__init__.pyファイルにAppのインスタンスを作成するべきではありません。パッケージにはの定義のオブジェクトのみを提供する必要があります。もちろん、例外はありますが、始めるときにはそのことをすべきではありません。

あなた__init__.pyファイルはこれだけ持っている必要があります。

from app import App 

は、それはどこでもアプリを必要とする、「mypackageと」という名前のフォルダにだと仮定すると、あなたはどうなる:

from mypackage import App 
app = App() 
関連する問題