使用模块中__init__.py中定义的方法


问题内容

假设我具有以下目录结构:

lib\
--__init__.py
--foo.py
--bar.py

在foo和bar内部,有单独的方法都需要相同的方法。例如:

foo:

def method1():
    win()

酒吧:

def method2(number):
    if number < 0:
        lose()
    else:
        win()

在里面

def win():
    print "You Win!"

def lose():
    print "You Lose...."

有没有办法在模块各自的子文件的 init .py中使用赢和输方法,还是我必须在该文件夹中创建另一个文件并将foo和bar导入?


问题答案:

是的,只需导入__init__.py模块(通过绝对导入或相对导入,都没关系)。

我从不喜欢相对导入,所以我会使用import mypackagein
mypackage.foo,它__init__.py就像相对导入一样导入,然后在其中使用。我一般也不喜欢放任何东西__init__.py,所以也许您应该无论如何都要考虑共享的公用文件。