1

次の構造のPythonアプリケーションがあります。

/app
  /models
    __init__.py
    profile.py
  /views
    __init__.py
    index.py
    login.py
  __init.py
main.py

現在、3つの__init__.pyファイルは空です。

のようなファイルindex.pyには、いくつかのクラスがあります。

class IndexHandler(webapp2.RequestHandler):
    #blah blah

パッケージのフルパスを入力せずに、など__init.py__のクラスを呼び出すことができるように、ファイルに何を書き込むのですか?profile.pyindex.py

4

2 に答える 2

1

技術的には、ファイルに何も入れる必要はありません__init__.pymain.pyappフォルダーにある限り、ファイルからモデルをインポートし、次のような機能を使用できるはずです。

import models    
models.profile.whatever

/ appフォルダーの「上」にいる場合は、/appフォルダーにファイルmain.pyが必要です。__init__.py次に、次のことができます。

import app
app.models.profile.whatever
于 2013-02-04T13:40:36.613 に答える
1

Pythonの名前空間は明示的です。各__init__.pyファイルで、そのパッケージの名前空間内で使用できるようにしたいモジュール、関数、およびクラスをインポートします。

たとえば、appパッケージにindexメンバーを含める場合は、次のようになります/app/__init__.py

from views import index

または、クラス自体を名前空間の一部にしたい場合は、次のようにします。

from models.views import IndexHandler

これにより、次のことが可能になります。

import app
handler1 = app.index.IndexHandler()  # example 1
handler1 = app.IndexHandler()  # example 2
于 2013-02-04T13:55:55.773 に答える