我希望为列表类(对于数组)定义实例方法 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)
可以工作吗?)
最佳答案
您的代码创建了一个名为 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
,用它自己的话来说:
may lead you to hell if used on production code.
如果 hell 是你的目标,那么这就是你想要的:
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)
关于python - 在 Python 中,我可以为列表类定义一个实例方法 map() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35285860/