Использование методов, определенных в __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