我有以下类:如何调用实例列表上的特定方法(使用地图)?
class Enum(RootFragment):
def __init__(self, column, packageName, name, modifiers=["public"], enumValues=[]):
RootFragment.__init__(self, packageName, name, modifiers, "enum")
self.column = column
self.enumValues = []
map(self.addEnumValue, enumValues)
... more methods
现在我创建一个数字,放入一个字典枚举实例。这是被印在:
{'ManagerRole': <Enum instance at 0x0998F080>, 'StaffMemberRole': <Enum instance at 0x0998B490>}
现在因为<Enum instance at 0x0998F080>
不是我想呼吁每个实例的getName
方法非常有用。我尝试:
print ", ".join(map(Enum.getName, collidingEnums.items())),
但是这给了我一个错误说:
TypeError: unbound method getName() must be called with Enum instance as first argument (got tuple instance instead)
EEH?你如何在这里打电话给getName
?这有可能吗?
使用'getattr'。例如 – 2012-03-28 21:56:01
对不起,我的意思是,使用'getattr(object,“__name __”)' – 2012-03-28 21:57:59
你在这种特殊情况下的问题是你调用'dict.items()',它返回'(key,value)'元组。如果你正在调用'dict.values()'这个特定的例子会起作用。但是,要使它适用于并非都具有相同类型的值,请使用Amber建议中的列表理解。 – 2012-03-28 21:59:48