假设我有以下目录结构:
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导入?
答案 0 :(得分:7)
是的,只需导入__init__.py
模块(通过绝对或相对导入,它并不重要)。
我从不喜欢相对导入,所以我会在import mypackage
中使用mypackage.foo
来执行此操作,导入__init__.py
就像相对导入一样,然后在那里使用它。我也不喜欢在__init__.py
中放置任何东西,所以也许你应该考虑共享的公共文件。
答案 1 :(得分:6)
使用相对导入:
from . import win, lose