2012-03-01 57 views
0

我正在寻找一种将多个python文件移动到单个文件中的方法,例如 而是两个
文件有没有办法刻意改变当前的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的(),而且还有他们是比较明显的是如何分解的人阅读的代码。

编辑:为了清楚起见,我一直在寻找一种方式来做到这一点的类中的所有功能,而不是单独为每个功能。就像在课堂上进行狂野进口一样。

回答

1

听起来超级哈克,但你可以做这样的事情

>>> class A: 
    def x(): 
     pass 
    def y(): 
     pass 


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

这真的很黑。我将它们分开以供个人使用和github,但我想将它们放在一个单独的python文件中,以便在C可执行文件中进行推送。 – RobotHumans 2012-03-02 02:42:37

2

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

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

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

这会工作。我只需要添加大量的声明就可以了。如果我要这样做,我不妨改变对foo.bar()的调用。虽然仍然有帮助。 – RobotHumans 2012-03-01 23:07:56