有没有办法故意破坏当前的Python命名空间?

时间:2012-03-01 22:46:41

标签: python namespaces

我正在寻找一种方法将几个python文件移动到一个文件中,例如
而不是两个文件

foobartest.py

from foo import *
bar()
foo.py
def bar()
    return 'foobar'

做这样的事情:

class foo():
    def bar()
#insert some way to get the class into the namespace
bar()
有没有办法将本地定义的类放入同一脚本的根名称空间?

原因是我想要合并多个文件而不必更改对foo.bar()的所有bar()调用,并且对于阅读代码的人来说它们是如何分解的还是相对明显的。

编辑:为了清晰起见,我一直在寻找一种方法来为类中的所有函数执行此操作,而不是为每个函数单独执行。就像在课堂上进行疯狂导入一样。

2 个答案:

答案 0 :(得分:2)

如果foo.bar()staticmethodclassmethod,您可以在合并文件的顶部设置bar = foo.bar。例如:

class foo:
    @staticmethod
    def bar():
        # ...

bar = foo.bar
bar() # calls foo.bar()

答案 1 :(得分:1)

听起来超级hacky,但你可以做类似

的事情
>>> class A:
    def x():
        pass
    def y():
        pass


>>> globals().update(A.__dict__)
>>> x
<function x at 0x02AF1CB0>
>>> y
<function y at 0x022D8230>
>>>