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

时间:2012-09-05 18:24:34

标签: python

假设我有以下目录结构:

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...."

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

2 个答案:

答案 0 :(得分:7)

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

我从不喜欢相对导入,所以我会在import mypackage中使用mypackage.foo来执行此操作,导入__init__.py就像相对导入一样,然后在那里使用它。我也不喜欢在__init__.py中放置任何东西,所以也许你应该考虑共享的公共文件。

答案 1 :(得分:6)

使用相对导入:

from . import win, lose