2010-12-31 5 views
1

동일한 변수에서 작동하지만 서로 역수 인 두 클래스가 있습니다. 모든 교환기를 하드 코딩하지 않고 모든 값을 하나의 배열로 결합하지 않고 변수를 전송할 수 있습니까? 클래스를 결합하는 것은 옵션이 아닙니다.클래스 간 변수 전송

#pseudocode 

class class1: 
    def __init___(self): 
     # code 
     initialize variable MAIN 

    # do stuff 
    # do stuff 
    make variable stuff 
    # do stuff 
    make variable thing 
    # do stuff 

class class2: 
    def __init___(self): 
     # code 
     initialize variable stuff 
     initialize variable thing 
    # do stuff 
    # do stuff 
    undo variable stuff 
    # do stuff 
    undo variable thing 
    # do stuff 
    make variable MAIN 

나는 빨리 class2class1 사이에 앞뒤로 데이터를 보낼 수 있어야합니다.

+0

당신이 도움이 될 수에 대한 얘기하는지의 예. "반전하세요"? "이전 변수"? –

+0

그래, 그렇게해라! 너는 무엇을 시도 했는가, 왜 일하지 않았는가? –

+1

정확히 무슨 뜻인지는 분명치 않습니다. 실천 사례를 게시 할 수 있습니까? – Falmarri

답변

2

공유 데이터를 세 번째 개체에 넣고 두 클래스에서 참조하십시오.

+0

나는 특별히 세 번째 객체에 데이터를 넣는 것이 효과가 없다고 말했습니다. 편집 : 글쎄, 그렇지, 그다지 신비스럽지 않다. – calccrypto

+0

글쎄, 아니, 그 말은하지 않았다. :) 당신은 * 그들을 결합 * 작동하지 않았다. 이물. –

+0

@calccrypto : "그다지 매력적이지 않아". 그릇된. 매우 우아하고 간단한 리팩터링을 통해 모든 문제를 멋지게 해결합니다. –

2

나는 이것이 생각보다 훨씬 쉽다고 생각합니다. 다음은 두 클래스간에 데이터를 "보내는"몇 가지 예입니다. 이 같은

class class2(object): 
    def __init__(self, other): 
     self.other = other 

    def set_color(self, color): 
     self.color = color 
     # "Sending" to other class: 
     self.other.color = color 

    def set_smell(self, smell, associated_object): 
     self.smell = smell 
     associated_object.smell = smell 

사용법 :

>>> ob1 = class1() 
>>> ob2 = class2(ob1) 
>>> ob2.set_color("Blue") 
>>> ob1.color 
"Blue" 

>>> ob2.set_smell("Good", ob1) 
>>> ob1.smell 
"Good" 
+0

기다려 ... 어떻게 자기. 다른. 색상이 ob1에 도착 했니? – calccrypto

+0

@calccrypto : Oups, 철자가 잘못되었습니다. 결정된. 자기. 다른 *은 * ob1입니다. –

+0

그리고 이것에 마이너스가 있습니다!? 하, 사람들은 웃겨. (중요하지 않아 오늘 어쨌든 내 평판 한계에 도달 했으므로 잃어버린 포인트는 없습니다. :)) –