我有一个带有两个模块(a和b)的python软件包(mypack)。在这两个模块中,我都需要访问一个公共对象。我想在包的__init__.py
文件中定义和设置对象,因为两个模块都需要该对象,而我只想拥有那个Obj
的化身(即{{1} }。
但是我如何访问子模块obj
和a
中的实例化对象?
该软件包的用例为:
b
包的目录结构:
import mypack
t1 = mypack.a.Tool1()
t2 = mypack.b.Tool2()
t1.func() # prints 'test'
t2.func() # prints 'test'
mypack.obj.test() # prints 'test'
文件内容:mypack/__init__.py # define 'obj' used by both A and B modules
mypack/A.py
mypack/B.py
mypack/__init__.py
文件内容:class Obj:
def test(self):
print("test")
obj = Obj()
mypack/a.py
文件内容:class Tool1:
def func(self):
print(obj.test()) # Does NOT work. How to get access to
# obj in the enclosing namespace?
mypack/b.py
如何在class Tool2:
def func(self):
print(obj.test()) # Does NOT work. How to get access to
# obj in the enclosing namespace?
中访问mypack.a
中定义的对象obj
?
或者什么是更好的方法?