2014-09-19 83 views
0

我想寫一個模型,其中存儲在不同文件中的不同類正在交換信息。Python:交互對象屬性

例如,我有一個主文件,最終將執行模型

--main.py 

from solution import Solver 

solver = Solver() 

solver.create() 

還有另外兩個文件/類,應在隨後交換信息:

--solution.py 
from grid import Remap 
remap = Remap() 

class Solver: 
    def __init__(self): 
     self.solve = 4 

    def create(self): 
     remap.method1() 

     self.solve += remap.x+remap.y 
     print self.solve 

--grid.py 
class Remap: 
    def __init__(self): 
     self.x = 0 
     self.y = 0 

    def method1(self): 
     self.x += 1 
     self.y += 2 

到目前爲止是這種情況似乎很容易。

現在我想補充的另一種方法來grid.py/Remap使用當前屬性從其他類求解解決。例如:

--grid.py 
class Remap: 
    def __init__(self): 
     self.x = 0 
     self.y = 0 

    def method1(self): 
     self.x += 1 
     self.y += 2 

    def method2(self): 
     self.x = ?????.solve 

但是我怎麼從一個類更新後的屬性到另一個,這是依賴於對方,避免循環依賴。我是否必須使用外部全局類(它們確實存在於Python中嗎?)?

+2

你能解釋一點什麼這個代碼應該要做什麼?你可以讓'Solver'對象和*參數*到'Remap.method2()'? – jonrsharpe 2014-09-19 10:12:34

+0

我實際上想創建一個可以應用於不同類的對象。在C++中,可以在頭文件「extern Solver * solver;」中聲明一個實例爲extern。我想這就是我想在Python中做什麼?! – Jan87 2014-09-19 11:11:59

+0

這並沒有真正解釋太多 - 你能提供一些不太抽象的用法例子嗎? – jonrsharpe 2014-09-19 11:22:42

回答

0

由於Solver正在訪問remap它應該只是本身傳遞到remap

class Solver: 
    def __init__(self): 
     self.solve = 4 
     self.remap.solver = self 

,然後remap可以使用它:

class Remap: 
    def method2(self): 
     self.x = self.solver.solve