我希望为列表类(对于数组)定义实例方法map()
或join()
。例如,对于map()
:
class list:
def map(self, fn):
result = []
for i in self:
result.append(fn(i))
return result
print [1, 3, 5].map(str)
Python中是否可以为list
类执行此操作? (如果没有,可以使最后一行[1, 3, 5].map(str)
起作用吗?)
答案 0 :(得分:4)
您的代码会创建一个名为list
的新变量,该变量会隐藏原始变量。你可以通过继承来做得更好:
class mylist(list):
def map(self, fn):
result = []
for i in self:
result.append(fn(i))
return result
mylist([1, 3, 5]).map(str)
请注意,无法覆盖[]
以生成builtins.list
所以留下monkeypatching内置。 There's a module for that,forbiddenfruit
,用它自己的话说:
如果在生产代码上使用,可能会让你陷入地狱。
如果你想要的地方,那么这就是你想要的:
from forbiddenfruit import curse
def list_map(self, fn):
result = []
for i in self:
result.append(fn(i))
return result
curse(list, "map", list_map)
print [1, 3, 5].map(str)