Python模块初始化



在模块代码中初始化模块中的对象是不好的做法吗?

in Module.py:

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

在用户代码中,您可以:

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

…无需在用户代码中初始化Foo类。当然,只有在不需要实参来初始化对象时才有用。

有不这样做的理由吗?

通常,您只希望运行使模块可用所需的最小值。这将对性能(加载时间)产生总体影响,也可以使调试更容易。此外,通常会从一个给定的类创建多个实例。

话虽如此,如果你有很好的理由(比如只需要一个类的实例),那么一定要在加载时初始化它。

我有时这样做,当它真的很方便的时候,但我倾向于做foo = Foo()。我真的不喜欢让类看起来是私有的,让实例作为Foo可用的想法。作为一个使用你的代码的开发人员,我发现这很令人不安。

相关内容

  • 没有找到相关文章

最新更新