如何将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")
成功。
This Works!谢谢!还有一个很好的解释。 –