访问封闭名称空间中定义的对象

时间:2018-06-26 12:26:10

标签: python

我有一个带有两个模块(a和b)的python软件包(mypack)。在这两个模块中,我都需要访问一个公共对象。我想在包的__init__.py文件中定义和设置对象,因为两个模块都需要该对象,而我只想拥有那个Obj的化身(即{{1} }。

但是我如何访问子模块obja中的实例化对象?

该软件包的用例为:

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

或者什么是更好的方法?

0 个答案:

没有答案