2012-04-06 20 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

+0

この質問は数日前に尋ねられました。短い答えはいいえです。長い答えは時にはメタクラスなどを使用しています。理由の説明については、[ここ](http://stackoverflow.com/questions/9987018/why-does-self-outside-a-functions-parameters-give-a-not-defined-error/9987102#9987102)を参照してください。 。 – aaronasterling

答えて

11

あなたは、クラス名を必要とする特定の理由があるのクラス名

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

@AramKocharyan PHPは、クラスのより標準的な概念を持っているため、クラス変数にアクセスするためにクラスを参照する必要があります。 Pythonでは、VMはローカルスコープに入り、関数であるかのように 'class'ステートメントの下ですべてのコードを実行します。次に、結果の名前空間をクラスに変換します。したがって、すでに同じ名前空間に入っているので、Pythonでこれを行うことができます。 – aaronasterling

関連する問題