你不能MetaDataElement
在它被构建的时候引用它,因为它还不存在。因此,
class MetaDataElement:
(MD_INVALID, MD_CATEGORY, MD_TAG) = range(3)
mapInitiator2Type = {'!':MetaDataElement.MD_CATEGORY,
'#':MetaDataElement.MD_TAG}
之所以失败,是因为它的构造本身就mapInitiator2Type
需要MetaDataElement
具有它还没有的属性。您可以将常量MD_INVALID
等视为构建类的本地变量。这就是为什么以下工作有效的原因,正如 icktoofay 所写:
class MetaDataElement:
(MD_INVALID, MD_CATEGORY, MD_TAG) = range(3)
mapInitiator2Type = {'!': MD_CATEGORY, # MD_CATEGORY is like a local variable!
'#': MD_TAG}
MetaDataElement
但是,您可以在任何尚未解释的代码中引用该类,如
def method_of_MetaDataElement(self):
print MetaDataElement.MD_TAG
你甚至要参考MetaDataElement
,这里,因为在执行MD_TAG
时不是一种局部变量(在类构造过程中只定义为一种局部变量)。一旦创建了类,它就是一个类属性,这就是为什么必须这样引用它。method_of_MetaDataElement()
MD_TAG
MetaDataElement
MD_TAG
method_of_MetaDataElement()