2010-07-16 46 views
0

我有兩個python文件1.py和2.py.如何在python中的exec語句中傳遞變量

**1.py is as** 
class A: 
     def __init__(self): 
       x = 5 
       y = 7 
       NUMBERS = self 
       fp = open(filePath) 
       temp = fp.read() 
       exec(temp) 
       fp.close() 
       ADD_METHOD() 

**2.py is as** 
    def ADD_METHOD(): 
      print NUMBERS.x + NUMBERS.y 

現在我的問題在2.py文件中如何使用這個NUMBERS變量。 這是更好地看待問題的例子,我知道我可以通過導入模塊來做到這一點,但問題是我必須用exec()方法做解決方案,並且我可以在2.py文件中獲得NUMBERS,也就是說,如果我必須以exec作爲參數或其他方法來傳遞它。

任何幫助真的明顯 感謝

+0

你在談論'exec' *語句*,或約' os.exec()'? – 2010-07-16 10:02:45

+0

我希望這個「exec(2.py)」應該是語句 – 2010-07-16 10:27:27

+0

'exec'不帶文件名,所以這沒有幫助。 – 2010-07-16 11:07:43

回答

0

我不知道正是你需要的,但我有一個解決方案,即跟隨你限制你的小例子。

# 1.py 
... 
os.execl("2.py", str(NUMBERS.x), str(NUMBERS.y)) 

# 2.py 
from collections import namedtuple 
A = namedtuple("A", "x y") 
NUMBERS = A(x=sys.argv[1], y=sys.argv[2]) 
... 
2

如果這些是你自己寫兩個Python文件,爲什麼不創建一個2.py功能,你可以導入和1.py打電話?這是一個更容易和更乾淨的抽象。它也避免了創建一個新的過程。你可以寫這樣的事情:

# **1.py is as** 
from 2 import ADD_METHOD 
class A: 
     def __init__(self): 
       x = 5 
       y = 7 
       ADD_METHOD(x, y) 

# **2.py is as** 
    def ADD_METHOD(x, y): 
      print x + y 

請注意,你真的應該選擇更好的名稱比1.py2.py後來爲了避免混淆;)