Pythonモジュールの初期化
-
29-10-2019 - |
質問
モジュールコードでモジュールのオブジェクトを初期化するのは悪い練習ですか?
の Module.py
:
class _Foo(object):
def __init__(self):
self.x = 'Foo'
Foo = _Foo()
ユーザーコードよりも、次のことができます。
>>> from Module import Foo
>>> print Foo.x
'Foo'
>>>
...ユーザーコードでFOOクラスを初期化する必要なく。もちろん、オブジェクトを初期化するために引数が必要ない場合にのみ便利です。
これをしない理由はありますか?
解決
通常、モジュールを使用できるようにするために必要な最小値を実行するだけです。これは、パフォーマンス(読み込み時間)に全体的な影響を及ぼし、デバッグを容易にすることもできます。
また、通常、特定のクラスから複数のインスタンスが作成されます。
そうは言っても、正当な理由がある場合(クラスの1つのインスタンスのみを望んでいるなど)、ロード時に確実に初期化します。
他のヒント
私は時々これをします、それが本当に便利なとき、私はする傾向があります foo = Foo()
. 。クラスをプライベートに見せ、インスタンスを利用できるようにするというアイデアが本当に嫌いです Foo
. 。あなたのコードを使用している開発者として、私はそれがかなり戸惑うことに気付くでしょう。
所属していません StackOverflow