如果列表的内容都是同一个类的实例,可以在方法名前加上类名。
class Fred:
def __init__(self, val):
self.val = val
def frob(self):
return self.val
freds = [Fred(4), Fred(8), Fred(15)]
print map(Fred.frob, freds)
结果:
[4, 8, 15]
如果列表的元素是指定类的子类,也可以这样做。但是,它仍然会调用该方法的指定实现,即使该方法在子类中被覆盖。例子:
class Fred:
def __init__(self, val):
self.val = val
def frob(self):
return self.val
class Barney(Fred):
def frob(self):
return self.val * 2
freds = [Fred(4), Barney(8), Barney(15)]
#You might expect the barneys to return twice their val. ex. [4, 16, 30]
#but the actual output is [4, 8, 15]
print map(Fred.frob, freds)