Использование методов, определенных в __init__.py в модуле
Предположим, что у меня есть следующая структура каталогов:
lib\
--__init__.py
--foo.py
--bar.py
Внутри foo и bar есть отдельные методы, для которых нужен одинаковый метод. Например:
Foo:
def method1():
win()
бар
def method2(number):
if number < 0:
lose()
else:
win()
INIT
def win():
print "You Win!"
def lose():
print "You Lose...."
Есть ли способ использовать методы win и loss в init.py в модулях соответствующих подфайлов, или мне нужно создать другой файл в папке и импортировать foo и bar, чтобы
Ответы
Ответ 1
Да, просто импортируйте модуль __init__.py
(через абсолютный или относительный импорт, это не имеет значения).
Мне не нравится относительный импорт, поэтому я бы сделал это с import mypackage
в mypackage.foo
, который импортирует __init__.py
точно так же, как относительный импорт, а затем используя его там. Мне также не нравится вставлять что-либо в __init__.py
, хотя обычно, так что, возможно, вам стоит рассмотреть общий общий файл.
Ответ 2
Использовать относительный импорт:
from . import win, lose