You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字典调用类内部函数报TypeError,不用lambda如何修复?

报错原因

你定义在类内的add、sub属于实例方法,Python调用这类方法时会自动将实例对象self作为第一个参数传入。你当前的函数定义没有预留self参数位置,最终传入的self实例被当成了运算变量,和整数做加减运算就触发了类型错误。同时你在字典中直接引用add/sub也是错误的,类内的方法需要通过self.前缀访问。

修复方案

方案1:声明为静态方法(更推荐)

静态方法不需要接收self参数,适合这种不需要访问类/实例属性的工具函数,修改后代码如下:

from typing import List

class Solution:
    @staticmethod
    def add(x) -> int:
        return x + 1

    @staticmethod
    def sub(x) -> int:
        return x - 1

    def finalValueAfterOperations(self, operations: List[str]) -> int:
        switch = {"X++": self.add, "++X": self.add, "X--": self.sub, "--X": self.sub}
        x = 0
        for op in operations:
            x = switch[op](x)
        return x

方案2:补充self参数

如果不想用静态方法,只要给两个运算函数补上self作为第一个参数即可:

from typing import List

class Solution:
    def add(self, x) -> int:
        return x + 1

    def sub(self, x) -> int:
        return x - 1

    def finalValueAfterOperations(self, operations: List[str]) -> int:
        switch = {"X++": self.add, "++X": self.add, "X--": self.sub, "--X": self.sub}
        x = 0
        for op in operations:
            x = switch[op](x)
        return x

内容的提问来源于stack exchange,提问作者Animesh Srivastava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:15:03