2011-07-27 110 views
0

只是一個很簡單的事情,有沒有從內部類的定義訪問外部類,像這樣的方式:有沒有辦法在python嵌入類中訪問外部類?

class Model: 
    class Options: 
    model = Model <-- error! 

我窩選項裏面的模型,因爲只有在模型的範圍語義上存在這些選項,所以這似乎是適當的。

謝謝, 亞歷克斯

+4

爲什麼要將(外部)*類*存儲在(內部)*類變量*中? – delnan

+0

我認爲這比設計語言問題更像是一個設計實現的缺陷。 –

+0

我不必將其存儲在變量中,但我想在內部類中使用外部類,因爲它們在語義上是相關的。變量只是一個例子...... –

回答

2

我不知道這正是你想要的東西,但嘗試:

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

這似乎是做的工作,很好的答案,謝謝! –

1

那麼,你至少可以實例化外部類中的內部類的方法:

class Model: 
    class Options: 
     def __init__(self): 
      model = Model() 
+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 
相關問題