13

コーディングスタイルを改善するために、TwoScoopsDjangoのベストプラクティスを読んでいます。私は相対的なインポートを行っています。これが再利用可能にするためのサンプルコードです。

Old Way:
from cones.foo import bar

New way:
from .foo import bar

上記のコードはコーンアプリ用ですが、他のアプリで他のモデルを呼び出すとどうなりますか?私はこのように置く必要がありますか?

from .foo import bar
from .other import sample

OR

from .foo import bar
from test.other import sample

正しい方法は何ですか?

4

2 に答える 2

21

私は通常、このようなインポートを1つの理由でのみ使用します

from .foo import bar
from .other import sample

理由は、もし明日、私のモジュール名が「test」から「mytest」に変わるなら、コードはリファクタリングを必要としません。コードは壊れることなく機能します。

アップデート

'。'で始まるすべてのインポート ドット、そのパッケージ内でのみ機能します。パッケージ間のインポートには、パス全体が必要です。

于 2013-02-08T07:15:24.653 に答える
3

test別のアプリの場合、

from .other import sample

動作しません。

アップデート:

同じアプリからインポートする場合にのみ、相対インポートを使用できます。

testアプリ内

from .other import sample

動作します。ただし、完全なフォームが必要です

from cones.foo import bar

アプリfooからで定義されたメソッドをインポートする場合。test

したがって、2番目の方法で質問に答えることが正しい方法です。

于 2013-02-08T07:16:32.283 に答える