我想知道是否可以将对象导入到诸如类等的命名空间中。因此可以引用它。基本上删除了明确的重新定义:
import Bar
class Foo:
X = Bar.X
Y = Bar.Y
Z = Bar.Z
我基本上对能够从Foo引用Bar.X等感兴趣。来自... import ...无法按预期工作。
答案 0 :(得分:0)
我觉得你不应该这样做(对我来说这感觉真是个坏主意)。但是,如果你坚持,这是我的尝试:
import module
class Foo(object):
pass #Other stuff here
for k,v in module.__dict__.items():
try:
setattr(Foo,k,v)
except AttributeError:
pass #read-only attributes?
当然,由您(程序员)来确保您不会使用Foo
属性覆盖module
的任何属性。
请注意,如果您只想在导入时更改模块的名称,则可以这样做:
import Foo as Bar
或者你可以from import ... as name_in_this_module
。
例如,假设你有一些特定于Windows的东西和一个在Unix上提供相同功能的自定义模块:
try:
import windows_module as sys_dep_mod
except ImportError:
import unix_module as sys_dep_mod
def myfunc(baz):
bar = sys_dep_mod.func(baz)
#do something with bar
#return something