Модули с классами и импортом - PullRequest
0 голосов
/ 03 августа 2011

Если бы я использовал класс в модуле, как бы я сделал его "верхним уровнем" в его экземпляре?

Состав:

/package
    __init__.py
    /subPackage
        __init__.py
        module.py
        subModule.py
    /theScript.py

python theScript.py

Источник текста:

import package.subPackage.module
package.subPackage.module.method()

Источник /package/subPackage/module.py:

class module:
    def method(self): pass
moduleInstance = module()

Я думаю, что я спрашиваю, как бы я сделал так, чтобы мне не пришлось делать package.subPackage.module.moduleInstance.method() и мог бы package.subPackage.module.method()

Я знаю, что могу просто удалить класс и экземпляр, но я предпочитаю этот класс, потому что он упрощает создание подкласса позже, если кто-то захочет, без необходимости напрямую изменять наш источник, но если мне в конечном итоге придется, я просто буду использовать методы вместо класс / метод в модуле.

1 Ответ

6 голосов
/ 03 августа 2011

Вот как random модуль в стандартной библиотеке решил эту проблему:

_inst = Random()
seed = _inst.seed
random = _inst.random
uniform = _inst.uniform
triangular = _inst.triangular
...

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

...