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

Python类方法调用报错:NameError: GetApiUpdatedMetadata未定义

Python类方法调用错误排查:NameError问题解决

你编写的代码运行时出现NameError: name 'GetApiUpdatedMetadata' is not defined,问题出在两个核心点:

问题1:类方法调用未使用self

在GetblnUpdatePossible方法中,直接调用GetApiUpdatedMetadata()是错误的。Python中,类内部调用自身的实例方法必须通过self关键字引用,否则解释器会将其视为全局作用域的函数,自然找不到对应的定义。

问题2:属性名不匹配

GetApiUpdatedMetadata方法里判断的是self.strPlateforme,但初始化方法__init__中定义的属性是self.strPlateformeOld,属性名不一致——即使修复第一个问题,运行时也会触发AttributeError。

修正后的代码

class UgcObject:
       
    def __init__(self, strPlateformeOld, strIdOld):
        self.strPlateformeOld = strPlateformeOld
        self.strIdOld = strIdOld
     
    def GetApiUpdatedMetadata(self):    
        # 修正属性名,与初始化方法定义一致
        if self.strPlateformeOld == "youtube":        
           return True      
        # 补充默认返回值,避免无匹配时返回None
        return False
           
    def GetblnUpdatePossible(self):
        # 使用self调用当前实例的方法
        return self.GetApiUpdatedMetadata()
    
   

if __name__ == '__main__':
    ugc_test = UgcObject("youtube","id")
    print(ugc_test.GetblnUpdatePossible())

关键修改说明

  • 在GetblnUpdatePossible中,将GetApiUpdatedMetadata()改为self.GetApiUpdatedMetadata(),确保调用的是当前实例的方法。
  • 将GetApiUpdatedMetadata中的self.strPlateforme改为self.strPlateformeOld,匹配初始化时定义的属性名。
  • 补充GetApiUpdatedMetadata的默认返回值,避免平台不是youtube时无返回值的情况。

内容的提问来源于stack exchange,提问作者8oris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:45:39