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 回答