我声明了一个类Employee
和一个由它组成的列表:
class Employee():
def __init__(self, _name):
self.name = _name
def get_name(self):
return self.name
Tom = Employee("Tom")
Karl = Employee("Karl")
John = Employee("John")
employee_list = [Tom, Karl, John]
Run Code Online (Sandbox Code Playgroud)
现在我想通过get_name
在地图中应用来获得他们的名字列表:
name_list = map(get_name, employee_list)
Traceback (most recent call last): File "ask.py", line 13, in <module>
name_list = map(get_name, employee_list)
NameError: name 'get_name' is not defined
Run Code Online (Sandbox Code Playgroud)
怎么可能get_name
没有定义?
如何在地图中应用成员函数?
map(get_name, employee_list)
在你的代码中相当于
[get_name(employee) for employee in employee_list]
不是[employee.get_name() for employee in employee_list]
get_name
您应该在类之外声明一个方法Employee
:
def get_name(employee):
return employee.name
Run Code Online (Sandbox Code Playgroud)
或者更简单的方法Lambda
:
name_list = map(lambda employee: employee.name, employee_list)