如何将python类属性设置为另一个以前在类定义中定义的类属性的值?

问题描述:

我正在定义一个python类,并希望声明一组类属性,然后在初始化列表时使用这些属性,这些属性也将作为类属性存储。如何将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中初始化另一个类时,有没有办法使用一个类属性?

类的主体是作为一个函数执行的,并且本地命名空间条目成为类的属性。所以,类主体的执行过程中,你可以把其他的名字为局部变量:

FIELD_NAME_ID = "ID" 
FIELD_NAME_USER = "User" 

FIELD_NAME_LIST = [FIELD_NAME_ID, FIELD_NAME_USER] 

你已经发现了这一点,因为你叫FIELD_NAME_LIST.append("ID")成功。

+0

This Works!谢谢!还有一个很好的解释。 –