6

モジュールコードでモジュール内のオブジェクトを初期化するのは悪い習慣ですか?

Module.py:

class _Foo(object):
    def __init__(self):
        self.x = 'Foo'

Foo = _Foo()

ユーザーコードよりも、次のことができます。

>>> from Module import Foo
>>> print Foo.x
'Foo'
>>>

...ユーザー コードで Foo クラスを初期化する必要はありません。もちろん、オブジェクトを初期化するための引数が必要ない場合にのみ役立ちます。

これをしない理由はありますか?

4

2 に答える 2

6

通常、モジュールを使用可能にするために必要な最小限の機能のみを実行します。これはパフォーマンス (読み込み時間) に全体的な影響を与え、デバッグを容易にすることもできます。
また、通常、特定のクラスから複数のインスタンスが作成されます。

そうは言っても、正当な理由がある場合 (クラスのインスタンスを 1 つだけにしたいなど) は、ロード時に確実に初期化してください。

于 2011-09-13T01:32:16.923 に答える
3

本当に便利なときに時々これをしますが、私はそうする傾向がありますfoo = Foo()。クラスをプライベートに見せて、インスタンスをとして利用できるようにするというアイデアは本当に嫌いですFoo。あなたのコードを使用している開発者として、私はそれがかなり当惑することに気付くでしょう。

于 2011-09-13T01:37:27.233 に答える