1

MVCパターンを使用するプロジェクトがあります。

フォルダ「models」にはかなりの数のクラスがあり、各クラスには独自のファイルがあります。しかし、クラスを使用する必要があるたびに個別にインポートする必要があるため、便利ではないように感じます。たとえば、アプリのソースには次のようなものがたくさんあります。

from models.classX import classX
from models.classY import classY

すべてを一度にインポートしたい場合は、from models import *あらゆる種類のをに入れることができることがわかりましimportmodels/__init__.py。しかし、それはそれを行うためのpythonicな方法ですか?コンベンションとは何ですか?

4

3 に答える 3

6

Python は Java ではありません。クラスごとに 1 ファイルのパターンは避けてください。変更できない場合は、modelsパッケージのサブモジュールからすべてをインポートできます。

# all.py: convenient import of all the needed classes
from models.classX import classX
from models.classY import classY
...

次に、コードで次のように記述できます。

import my.package.models.all as models  # or from my.package.models.all import *

models.classXmodels.classYなどを使用します。

于 2012-11-04T10:04:16.230 に答える
0

最もpythonicな方法は、すでに使用しているものです。クラスをモジュールにグループ化することで、インポートを軽減できます。たとえば、Django では通常、すべてのアプリケーション モデルが 1 つのファイルに含まれています。

python docsから:

特定のモジュールは、使用時に特定のパターンに従う名前のみをエクスポートするように設計されていますがimport *、製品コードでは依然として悪い習慣と見なされています。

于 2012-11-04T10:01:18.553 に答える
0

まず、クラスとモジュールが一致しないように名前を変更し、PEP8 に従ってください。

models/
    classx.py
        class ClassX
    classy.py
        class ClassY

それから、私はこれを手に入れましたmodels/__init__.py

from models.classx import ClassX
from models.classy import ClassY

メインコードでは、次のいずれかを実行できます。

from models import *
x = ClassX()
from models import ClassX
x = ClassX()
import models
x = models.ClassX()
于 2012-11-04T11:10:25.577 に答える