1

私はpythonクラスを定義しており、一連のクラス属性を宣言したいと考えています。次に、これらの属性を使用して、クラス属性としても保存されるリストを初期化します。

class SampleClass( models.Model ):

    #----------------------------------------------------------------------
    # Class attributes
    #----------------------------------------------------------------------

    # field names
    FIELD_NAME_ID = "ID"
    FIELD_NAME_USER = "User"

    # Field name list
    FIELD_NAME_LIST = []
    FIELD_NAME_LIST.append( SampleClass.FIELD_NAME_ID ) # = "ID"
    FIELD_NAME_LIST.append( SampleClass.FIELD_NAME_USER ) # = "User"

    # rest of class definition
    # ...

#-- END class SampleClass --#

これは、Java でクラス変数を定義し、それらを使用して後で定義された他のクラス変数を初期化することに似ています。

この例では、クラス名を使用してそれらを参照しようとしています。次に例を示します。SampleClass.FIELD_NAME_ID

これは機能しません (クラス定義が壊れます)。

次のようなリスト項目を追加します。

FIELD_NAME_LIST.append( "ID" ) # = "ID"

正常に動作します。

Pythonで別のクラス属性を初期化するときに、あるクラス属性を使用する方法はありますか?

4

1 に答える 1

2

クラス本体は関数として実行され、ローカルの名前空間エントリがクラス属性になります。したがって、クラス本体の実行中に、他の名前をローカル変数として扱うことができます。

FIELD_NAME_ID = "ID"
FIELD_NAME_USER = "User"

FIELD_NAME_LIST = [FIELD_NAME_ID, FIELD_NAME_USER]

正常に呼び出したので、これはすでに発見されていますFIELD_NAME_LIST.append("ID")

于 2013-04-02T17:15:01.783 に答える