2011-07-27 2 views
0

그냥 아주 간단한 일이 같은 내부 클래스 정의에서 외부 클래스에 액세스하는 방법은 무엇입니까 그것은 적절하게 보인다.파이썬에서 중첩 클래스의 외부 클래스에 액세스하는 방법이 있습니까? 의미 이러한 옵션은 모델의 범위에 존재하기 때문에 모델의 내부</p> <pre><code>class Model: class Options: model = Model <-- error! </code></pre> <p>I 둥지 옵션을 그렇게 :

class Model: 
    class Option: 
     @property 
     def model(self): return Model 
+4

(outer) * 클래스 *를 (내부) * 클래스 변수 *에 저장 하시겠습니까? – delnan

+0

이것이 언어 구현보다 설계 구현상의 결함이라고 생각합니다. –

+0

변수에 저장할 필요는 없지만 의미 상 관련이 있으므로 내부 클래스의 외부 클래스를 사용하고 싶습니다. 변수는 단지 예제 일뿐입니다 ... –

답변

2

나는 이것이 당신이 원하는하지만 시도 정확히 확실하지 않다 :

class Model: 
    class Options: 
     def __init__(self): 
      model = Model() 
+0

이 작업, 좋은 대답, 감사 할 것 같다! –

1

글쎄, 당신은 적어도 내부 클래스의 방법으로 외부 클래스를 인스턴스화 할 수 있습니다

덕분에, 알렉스

+1

하지만'Model .__ init__'에서'Options'를 인스턴스화하면 재발 할 수 있습니다. – agf

+0

'model = Model()'대신'model = Model' 만하십시오. – warvariuc

1

시도 :

class Model: 
    pass 

class Options: 
    model = Model 
0

다른 해결책은 클래스 정의 다음에 할당을 수행하는 것입니다.

class Model: 
    class Options: 
    pass 

Model.Options.model = Model