2012-12-09 123 views
0

我的主模塊中有一個變量使用另一個模塊更改,但我想從主模塊更改變量另一個模塊。我對程序設計很陌生,所以我其實不知道如何解釋這些東西 - 抱歉,如果我問一個愚蠢的問題。如何更改模塊內的模塊中的變量在模塊中......(困惑)

程序的層次看起來有點像這樣:

主要
---特點
--- Pygame_handling
------特點

我用 「功能」 模塊在「主」中更改變量。我只需從「功能」中獲取定義的變量即可完成此操作。但是當我通過「Pygame_handling」更改變量時,它在「Main」模塊中創建的「Features」對象中沒有更改。

Main.py

import Features 
class Simulator: 
    def __init__(self): 
     self.Features = Features.Methods() 
     self.variables = self.Features.dictionary 

     self.PyObject = Pygame_handling.Window() 

Pygame_handling.py

import Features 
class Window: 
    def __init__(self): 
     self.Features = Features.Methods() 
     dict = {"some":"dict"} 
     self.Features.monitor_changes(dict) 
+0

你需要舉一個你的實際代碼的例子。 – BrenBarn

+0

在你的Window類中,你調用一個函數self.Features.Methods(),但是你的Window類沒有一個Features屬性。 –

+0

我不明白這段代碼與你的問題有什麼關係。你的兩個文件不共享任何對象。 – BrenBarn

回答

0

你是如何初始化這些類? 通常當我需要做這樣的事情我的代碼是這樣的:

py1.py:

class Test(object): 
    def test_print(self): 
     print 'Hi!' 

TEST = Test() 

py2.py:

from py1 import TEST 
TEST.test_print() 

# Adding new stuff to the TEST initialized class 
TEST.new_var = 50 
print TEST.new_var 
#output: 50 

所以,現在你可以使用該模塊中的初始化類。

+0

但我不明白這是如何允許我通過py2.py更改py1.py中的TEST對象中的任何東西 –

+0

不確定你的意思,然後在你的代碼示例中,您並未真正對Pygame_handling.py中的Features模塊進行任何更改,您可以在Window類中將它稱爲Methods()函數。但是,如果你這樣做了,那麼記住模塊只能執行一次,這就是爲什麼我通常有一個初始化類,這樣你可以改變py1.py中初始化類的元素。這通常被稱爲單身人士,並且通常會被忽視,但在我看來它有它的用途。 – bloodyshade