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

标签 python

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

相关文章:

javascript - 我正在尝试以一种奇怪的方式用 python 创建一个网站

javascript - Python 和 jQuery.ajax 调用之间的进度更新

javascript - JS深度优先遍历预序

python - 为什么我的查询变成 bool 值,如何防止这种情况发生,以便我可以迭代它?

python - 如何在 Odoo 12 中直接访问看板 View 模板中的 python 方法?

python - Setuptools 无法使用来自 dependency_links 的链接

python - 在 Flask 中访问传入的 POST 数据

python - Discordbot 仅在 Linux 上使用线程引发 "RuntimeError: set_wakeup_fd only works in main thread"

python - 将 DataFrameGroupBy 对象中的每个分组列转换为列表

python - 将 PDF 文件(或任何二进制文件)转换为 python 中的字符串(不是从 pdf 中获取文本)