Инициализация модуля Python - PullRequest
       21

Инициализация модуля Python

4 голосов
/ 13 сентября 2011

Это плохая практика для инициализации объектов в модуле, в коде модуля?

в Module.py:

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

Foo = _Foo()

Чем в коде пользователя, вы могли бы:

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

... без инициализации класса Foo в коде пользователя.Конечно, полезно, только если вам не нужны аргументы для инициализации объекта.

Есть ли причина этого не делать?

Ответы [ 2 ]

4 голосов
/ 13 сентября 2011

Как правило, вы хотите запустить только тот минимум, который необходим для работы вашего модуля.Это будет иметь общее влияние на производительность (время загрузки), а также может упростить отладку.
Кроме того, обычно из любого данного класса создается более одного экземпляра.

Сказав это, если выесть веские причины (например, требуется только один экземпляр класса), а затем, безусловно, инициализируйте его во время загрузки.

1 голос
/ 13 сентября 2011

Я делаю это иногда, когда это действительно удобно, но я склонен делать foo = Foo().Мне очень не нравится идея сделать класс закрытым и сделать экземпляр доступным как Foo.Как разработчик, использующий ваш код, я нахожу это довольно смущающим.

...