在模块代码中初始化模块中的对象是不好的做法吗?
Module.py
中的:
class _Foo(object):
def __init__(self):
self.x = 'Foo'
Foo = _Foo()
与用户代码相比,您可以:
>>> from Module import Foo
>>> print Foo.x
'Foo'
>>>
...无需在用户代码中初始化Foo类。当然,只有在您不需要参数来初始化对象时才有用。
有没有理由不这样做?
答案 0 :(得分:4)
通常,您只想运行使模块可用的最低要求。这将对性能(加载时间)产生整体影响,并且还可以使调试更容易 此外,通常会从任何给定的类创建多个实例。
话虽如此,如果你有充分的理由(比如只想要一个类的一个实例),那么肯定会在加载时初始化它。
答案 1 :(得分:1)
我有时这样做,当它非常方便时,但我倾向于做foo = Foo()
。我真的不喜欢让类看起来是私有的,并使实例可用Foo
。作为使用您的代码的开发人员,我发现这非常令人不安。