Python Module Initialization

橙三吉。 提交于 2019-12-10 17:17:02

问题


Is it bad practice to initialize the objects in the module, in the module code?

in Module.py:

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

Foo = _Foo()

Than in user code, you could:

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

...without having to initialize the Foo class in the user code. Of course, only useful if you don't need arguments to initialize the object.

Is there a reason not to do this?


回答1:


Typically, you only want to run the minimum necessary to have your module usable. This will have an overall effect on performance (loading time), and can also make debugging easier.
Also, usually more than one instance will be created from any given class.

Having said that, if you have good reasons (such as only wanting one instance of a class), then certainly initialize it at load time.




回答2:


I do this sometimes, when it's really convenient, but I tend to do foo = Foo(). I really dislike the idea of making the class appear private, and making the instance available as Foo. As a developer using your code I'd find that pretty disconcerting.



来源:https://stackoverflow.com/questions/7395797/python-module-initialization

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!