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

通常,您只想运行使模块可用所需的最低限度。这将对性能(加载时间)产生整体影响,并且还可以使调试更容易。
此外,通常会从任何给定的类创建多个实例。

话虽如此,如果您有充分的理由(例如只想要一个类的一个实例),那么一定要在加载时对其进行初始化。

于 2011-09-13T01:32:16.923 回答
3

我有时会这样做,当它真的很方便时,但我倾向于这样做foo = Foo()。我真的不喜欢让类看起来是私有的,并将实例作为Foo. 作为使用您的代码的开发人员,我会发现这非常令人不安。

于 2011-09-13T01:37:27.233 回答