私は約30人の開発者のチームのためのPythonコーディングガイドラインのセットをオーサリングしています。私の文書の基礎として、今まで私はGoogle python style guideとPEP 8 style guideを研究し、両方からの情報を取り入れました。Pythonでは、クラスのインポートと、そのクラスのモジュールのインポートの長所と短所は何ですか?
GoogleのスタイルガイドがPEP 8よりも制限の厳しい場所は、インポートされています。 Googleのガイドでは、パッケージやモジュールのみをインポートし、より修飾された名前でその中のアイテムを参照するように要求しています。例:
from pkg import module
...
my_class = module.MyClass()
「各識別子のソースは一貫性のある方法で表示されています」ということです。私たちのプロジェクトでは、パッケージを2〜3レベル深く編成しようと考えています。そのため、識別子の完全なソースを知るためには、読者はインポートステートメントを調べる必要があります。私は「好みのスタイル」として輸入のこのスタイルを提唱したいと思います:
from pkg.module import MyClass
...
my_class = MyClass()
私見名はより簡潔であれば、このようなリストの内包表記としてPythonの構築物中の可読性が向上しています。
私が不明な点は、Pythonインタプリタが背後で何をするかということです。たとえば、MyClassはこのモジュールとこのモジュールのすべてのインポータの両方のグローバル名前空間の一部になっていますか? (これは悪いことですが、奇妙なバグにつながる可能性があります;これが真実なら、私はGoogleのスタイルを主張します)。
私のPython開発の経験は約6ヶ月に制限されています(そして、相談するプロジェクトには多くの専門家がいません)ので、私はコミュニティからより多くの情報を得たいと思っていました。ここで私はすでに調査してきたいくつかの項目は、次のとおりです。
effbot - discussion on imports
stack overflow - import vs. from import
python documentation - modules
は、ご回答いただきありがとうございます!
*あなたが直接参照できるものは、モジュール内のグローバルです。 'MyClass'は実際には2番目の例ではグローバルですが、最初は' module'です。 –
私は 'import blah'と' vlah = blah.vlah'をします。私が 'blah import vlah'を行ったとしても、モジュール全体が" blah "とにかく処理されるからです。 – thkang
Martijnが答えたグローバルな質問以外に、あなたは何か他のものを探していましたか?もしそうなら、あなたは質問をより明確にすることができますか? – msw