元类是用于创建类的类。这样想:所有对象都有一个类,类也是一个对象,因此,一个类可以有一个类是有道理的。
http://www.ibm.com/developerworks/linux/library/l-pymeta.html http://www.ibm.com/developerworks/linux/library/l-pymeta.html
要了解这是做什么的,您可以查看代码中的几个点。
_members_ = {'T_UNDEF':0, 'T_NAME':1, 'T_NUMBER':2, 'T_STRING':3, 'T_OPERATOR':4, 'T_VARIABLE':5, 'T_FUNCTION':6}
globals()[key] = value
在这里,它获取字典中每个定义的键:“T_UNDEF”“T_NUMBER”并使它们在全局字典中可用。
def __init__(self, value):
for k,v in self._members_.items():
if v == value:
self.name = k
break
每当您创建枚举的实例时,它都会在初始化类时检查“值”是否在允许的枚举名称列表中。当找到该值时,它将字符串名称设置为 self.name。
c_uint.__init__(self, value)
这是将“ctypes value”设置为实际的 c 无符号整数的实际行。