16

假设我有以下目录结构:

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

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

富:

def method1():
    win()

酒吧:

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

__在里面__:

def win():
    print "You Win!"

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

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

4

2 回答 2

8

使用相对导入:

from . import win, lose
于 2012-09-05T18:26:33.197 回答
8

是的,只需导入__init__.py模块(通过绝对或相对导入,这并不重要)。

我从不喜欢相对导入,所以我会使用import mypackagein这样做mypackage.foo,它__init__.py像相对导入一样导入,然后在那里使用它。虽然我一般也不喜欢放任何东西__init__.py,所以也许你应该考虑共享公共文件。

于 2012-09-05T18:38:22.327 回答