2012-04-06 174 views
6
class SomeClass: 
    SOME_CONST = "hello" 
    SOME_OTHER_CONST = SomeClass.SOME_CONST + " world" 

這不起作用。參照另一類變量定義中的類變量

NameError: name 'SomeClass' is not defined

有沒有什麼辦法可以引用類內的類?

+1

是否有你需要的類名什麼特別的原因,或者你只是需要訪問其他類的屬性?您將它視爲同一範圍內的另一個變量,例如'SOME_OTHER_CONST = SOME_CONST' – Darthfett 2012-04-06 05:22:06

+0

前幾天有人問這個問題。最簡潔的答案是不。長答案有時使用元類或其他東西。請參閱[這裏](http://stackoverflow.com/questions/9987018/why-does-self-outside-a-functions-parameters-give-a-not-defined-error/9987102#9987102)瞭解爲什麼。 – aaronasterling 2012-04-06 05:22:39

回答

11

你不需要在類名

class SomeClass: 
    SOME_CONST = "hello" 
    SOME_OTHER_CONST = SOME_CONST + " world" 
+0

@AramKocharyan PHP需要引用該類來訪問類變量,因爲它具有更爲標準的類概念。在python中,虛擬機進入本地作用域,並執行'class'語句下的所有代碼,就像它是一個函數一樣。然後它將結果名稱空間轉換爲類。所以你可以用Python做這件事,因爲它已經在同一個名字空間。 – aaronasterling 2012-04-06 05:34:57