gpt4 book ai didi

python - 在 Python 中,我可以为列表类定义一个实例方法 map() 吗?

转载 作者:太空宇宙 更新时间:2023-11-04 10:16:12 25 4
gpt4 key购买 nike

我希望为列表类(对于数组)定义实例方法 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com