Python中类方法内用map调用其他类方法不生效怎么解决?
问题原因
你遇到的问题根源是Python 3中map()是惰性计算的迭代器,你没有对它返回的迭代器做遍历/消耗操作,所以内部的method1从来不会被实际执行。
修复方案
你可以根据场景选择以下任意一种修改方式:
- 方案1:将
map返回的迭代器转为列表,触发遍历执行
修改method2代码如下:
def method2(self, ls): list(map(self.method1, ls))
这种写法简单直接,但如果method1没有返回值,会生成一个全是None的临时列表,仅适合数据量较小的场景使用。
- 方案2:显式遍历
map迭代器,不保存临时结果
修改method2代码如下:
def method2(self, ls): for _ in map(self.method1, ls): pass
这种写法避免了生成无用的临时列表,内存占用更低。
- 方案3:替换为普通for循环调用(更符合Python可读性规范)
def method2(self, ls): for num in ls: self.method1(num)
这种写法可读性最高,也不需要理解map的惰性特性,更推荐日常开发使用。
补充说明
Python 2版本中map()会直接返回列表,调用后就会立刻执行所有函数逻辑,你写的原代码在Python 2环境下可以正常输出你预期的结果。
内容的提问来源于stack exchange,提问作者addawaddawoo
相关产品推荐
相关产品推荐

