2015-02-02 24 views
2

내부 클래스의 변수에 외부 클래스의 변수를 할당하려고합니다.중첩 클래스 변수 python

class OUTER(QtGui.QWidget): 
    def __init__(self):   
     super (OUTER, self).__init__() 
     self.initUI() 
    def number (self): 
     self.out = 50 
    ... 

    class INNER(QtGui.QLCDNumber) 
     in = OUTER.out #error: NameError: name 'OUTER' is not defined 

     @pyqtSlot() 
     def some_func(self): 
      self.display(self.in) 

나는 오류

NameError: name 'OUTER' is not defined. 

이 문제를 해결하기 위해 어떤 방법이 있나요 받고 있어요?

+0

* 내 클래스의 변수에 외부 클래스의 변수를 할당하려고합니다. * .... Ok. 계속 하시겠습니까? –

+0

@BhargavRao 오류는 다음 줄에 있습니다 :'in = OUTER.out #error : NameError : name 'OUTER'is not defined'. –

답변

2

수행 할 수 없습니다.

OUTER는 전체 외부 클래스 선언이 끝날 때까지 정의되지 않습니다. 클래스 본체는 실행 가능한 코드입니다. 정의 시간에 실행됩니다. 본문이 정의되면 이름에 할당되지만 그때까지 이름은 존재하지 않습니다.

이것이 중첩 클래스가 거의 Python에서 좋은 아이디어가 아닌 이유 중 하나입니다. 내부 클래스는 외부 클래스에 대한 특별한 액세스를 얻지 못하므로 전혀 중첩 할 이유가 없습니다.

게다가 방금 클래스를 통해 인스턴스 변수를 참조하려고합니다. 그것은 결코 작동하지 않습니다. OUTER.out이없고 OUTER의 인스턴스에만 out 속성이 있어야합니다. (OUTER.out의 값은 무엇이겠습니까?)

+0

고맙습니다. 이제 감각을 일으킨다. – user3335341