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
相关产品推荐
相关产品推荐

