2013-01-18 5 views
0

나는 내가 부를 수있는 많은 변수들로 구성된 배열을 가지고있다.python에서 두 객체를 참조하는 방법 array.x를 self.array.self.x로 변환하는 방법은 무엇입니까?

그래서 일반적으로 import.x를 사용하여 x를 호출합니다. 이제 특성 GUI에서 사용자가 설정할 수있는 두 개의 객체로 설정했습니다. 어떻게 '자기'를 사용하여 동일한 정보를 추출 할 수 있습니까? 대신 self.array의 self.array.self을 참조하려고하기 때문에

self.array.self.variable 

난 그냥 배열 속성 수는없는 변수 '자기'를 가지고있다. (self.variable).

이 문제를 해결하는 것은이 사용 차코을 할 저를 가능하게 할 것이다 :

plotdata = ArrayPlotData(x = self.array.self.variable, y = self.array.self.variable) 
plot = Plot(plotdata) 
self.renderer = plot.plot(("x", "y"), type="scatter", color="red")[0] 
self.plot = plot 

편집 : 나는 일반적으로 array.data로 읽을 수 무엇을 필요 [ '변수']. self.array.data [ 'self.variable']와 같은 것입니다. self.variable은 속성의 이름을 들고 문자열 인 경우

답변

1

, getattr를 사용

getattr(self.array, self.variable) 
+0

그래도 array.data [ 'x']로 구조화해야합니다. 전에는 이것을 강조 표시하지 않아서 미안합니다. – Griff

+0

즉 str (self.array) + '.data ['+ str (self.variable) + ']'하지만 어떻게 다시 plotdata 명령에 넣을 수 있습니까? – Griff

+0

getattr (self.array, data [self.x])가 분명히 작동하지 않습니다. – Griff

0

당신이 (적어도 나에게) 여기에 무엇을 의미하는지 분명하지 않다. 그러나 기본적으로 self은 클래스 메소드의 인스턴스에 대한 일반적인 이름입니다. 로컬 범위가 있으므로 외부에서 그렇게 참조하지 마십시오. 입니다. 외부에서는 단순히 self.array.variable 만 가능합니다.

그러나 인덱스 스타일 액세스를 원하십니까? __getitem__ 특수 메소드를 정의하여이를 수행 할 수 있습니다. 그런 다음 myobj["x"]을 할 수 있습니다.

+0

버튼이 GUI에 푸시되었을 때 데이터가 생성되므로 self.data라고합니다. 변수를 선택할 수있는 옵션도 있습니다. 왜 self.variable입니까? str (self.array) + '.data ['+ str (self.variable) + ']'와 같은 구문을 작성할 필요가 있지만 plotdata 명령으로 읽을 문자열은 필요합니다. – Griff

+0

@Griff 명령은 문자열로 무엇을 할 것인가? 표시 하시겠습니까? – Keith

관련 문제