我有以下類:如何調用實例列表上的特定方法(使用地圖)?
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