2012-12-09 3 views
0

주 모듈의 변수가 다른 모듈을 사용하여 변경되었지만 주 모듈의 변수를 변경하려고합니다. 다른 모듈. 나는 프로그래밍에 익숙하지 않기 때문에 실제로 이런 것들을 설명하는 방법을 모르겠다. 어리석은 질문을한다면 미안해.모듈의 모듈 내부에서 변수를 변경하는 방법 ... (혼동)

이 프로그램의 계층 구조가이 같은 비트 같습니다

홈페이지
는 ---
특징 --- Pygame_handling
------이

내가 "기능"기능 모듈 "Main"에서 변수를 변경합니다. 나는 단순히 "Features"에서 정의 된 변수를 가져 와서 이것을합니다. 그러나 "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

어떻게 당신이 그 클래스를 초기화하는? 나는이 I 코드 같은 것을 할 필요가있을 때 보통 좋아 :

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

하지만 py1.py에서 py2.py를 통해 TEST 객체를 변경하는 방법을 알 수 없습니다. –

+0

당신이 무엇을 의미하는지 잘 모르겠습니다. 코드 예제에서는 Pygame_handling.py의 Features 모듈을 실제로 변경하지 않지만 Window 클래스의 Methods() 함수라고 부릅니다. 그러나 모듈을 변경하는 경우에는 모듈이 한 번만 실행된다는 점을 기억하십시오. 따라서 초기화 된 클래스를 사용하여 py1.py로 초기화 된 클래스의 요소를 변경할 수 있습니다. 보통 싱글 톤 (Singleton)이라고 불리우며 대개는 눈살을 찌푸리게됩니다.하지만 제 의견에는 사용법이 있습니다. – bloodyshade

관련 문제