2017-10-06 8 views
0

PEP8では、インポートのベストプラクティスとして、すべてのインポートをモジュールの先頭に置くことが推奨されています。私は同じモジュール内のすべての異なるインポートが必要な複数のサブクラスを必要とする場合、これがまだ当てはまるかどうか疑問に思っています。異なるインポートが必要なモジュール内の複数のクラスのベストプラクティス?

具体的には、DataConnectorクラスを作成して、さまざまなソースからデータを読み込み、そのデータをpandasデータフレームに格納します。さまざまなデータソースを読み取るサブクラスがあります。たとえば、あるサブクラスは、別のサブクラスはPGdatabaseConnector(DataConnector)です。 Csvサブクラスはcsvをインポートする必要があり、PGdatabaseクラスはpsycopg2をインポートする必要があります。すべての輸入品をモジュール全体のトップに保つことがベストプラクティスですか?

(論理的には、すべてのクラスが1つのモジュールに含まれているように見えますが、それらをすべて別のモジュールに入れることもできますし、使用されないライブラリの読み込みについても心配する必要はありません)。

答えて

1

輸入品を別の場所に置く場合があります(輸入品に特定の順序で呼び出す必要がある副作用がある場合など)がありますが、この場合はすべての輸入品が一番上に表示されます目次のような.pyソースファイルのファイルが混乱しているように感じたら、各クラスと関連するインポートを新しいソースファイルに分割してください。

+0

一部のモジュールのみが使用可能な場合でもアプリケーションを部分的に実行したい場合を除きます。 OPは、同じモジュール内でクラスごとに条件付きでインポートできるようにしたいと思います(PythonはJavaではなく、同じモジュール内に複数のクラスを持つことができます)。 – cowbert

関連する問題