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

如何基于索引动态调用类方法?解决'str'对象不可调用错误

解决动态调用类方法的问题

你遇到的报错是因为列表里存的是方法名的字符串,字符串本身无法被当作函数调用。这个思路完全可行,给你两种简单的实现方案:

方案一:直接存储方法对象

把列表里的字符串换成类方法的实例对象,这样拿到后可以直接调用:

def CallMethod(self):
    # 直接存入方法对象,而非字符串
    Method_List = [
        self.Method_1,
        self.Method_2,
        self.Method_3,
        self.Method_4
    ]
    # 注意这里是赋值运算符=,不是比较运算符==
    self.base_index = 1
    # 获取目标方法对象
    self.MethodType = Method_List[self.base_index]
    # 直接调用方法
    result = Table([self.MethodType()])

方案二:通过字符串获取方法对象(适合必须用字符串的场景)

如果因为配置读取等原因必须存方法名字符串,用getattr()函数从实例中取出对应的方法对象再调用:

def CallMethod(self):
    Method_List = [
        'Method_1',
        'Method_2',
        'Method_3',
        'Method_4'
    ]
    self.base_index = 1
    self.MethodType = Method_List[self.base_index]
    # 从实例中获取对应方法对象,然后调用
    target_method = getattr(self, self.MethodType)
    result = Table([target_method()])

另外提下你代码里的两个小问题:

  • self.base_index == 1是比较操作,应该改成赋值self.base_index = 1
  • 最后一行的self.MainBodyType()应该替换成动态获取的方法调用,否则逻辑不匹配

内容的提问来源于stack exchange,提问作者2020db9

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:14:53