Python出现NameError: name 'mobile' is not defined错误,求排查帮助
错误原因分析
你触发NameError: name 'mobile' is not defined的核心问题是代码缩进错误:
- 你把
main()函数和if __name__=='__main__'的执行逻辑都缩进在了mobile类的内部。 - 在Python中,类定义是从上到下执行的,当类内部的
main()函数尝试创建mobile实例时,mobile类还没完成完整的定义,解释器无法识别这个类名;同时main()变成了类的方法,直接调用也不符合语法逻辑。
修正后的代码
class mobile: def __init__(self,brandname,color,isjack): self.brand=brandname self.color=color self.isjack=isjack def calling(self): print('calling') def cameraclick(self): print('picture is clicked') def message(self): print('message_sent') # 将main函数移到类外部,作为独立函数 def main(): m1=mobile('apple','black',False) print(m1.brand) print(m1.color) print(m1.isjack) m1.calling() m1.cameraclick() m1.message() print("-------------------") m2=mobile('samsung','grey',False) print(m2.brand) print(m2.color) print(m2.isjack) if __name__=='__main__': main()
额外说明
- Python是缩进敏感语言,代码块的缩进决定了它所属的作用域,类内部的缩进属于类的成员(方法或属性),全局逻辑需要和类定义保持同级缩进。
- 修正后,
main()作为全局函数,在类定义完成后执行,此时mobile类已经被解释器识别,就能正常创建实例了。
内容的提问来源于stack exchange,提问作者subham singh
相关产品推荐
相关产品推荐

