Skip to main content
 首页 » 编程设计

python 类名未定义 NameError

2025年05月04日12del

我有一个类,我需要实例化它才能调用它包含的方法。当我从另一个类访问它时它工作正常但是当我从终端运行时它说:

File "myClass.py", line 5, in <module> 
  class MyClass: 
File "myClass.py", line 23, in ToDict 
  td=MyClass() 
NameError: name 'MyClass' is not defined 

粘贴代码:

class MyClass: 
    def convert(self, fl): 
        xpD = {} 
        # process some stuff 
        return xpD 
 
    if __name__ == "__main__": 
        source = sys.argv[1] 
        td = MyClass() 
        needed_stuff = td.convert(source) 
        print(needed_stuff) 

请您参考如下方法:

问题是您的 if __name__ == "__main__" block 在您的类定义中。这将导致错误,因为 if 中的代码将作为正在创建的类的一部分在该类绑定(bind)到名称之前运行。

这是此错误的一个简单示例:

class Foo(object): 
    foo = Foo() # raises NameError because the name Foo isn't bound yet 

如果您像这样格式化您的代码(即,if 在顶层未缩进),它应该可以正常工作:

class MyClass: 
    def convert(self, fl): 
        xpD = {} 
        # process some stuff 
        return xpD 
 
if __name__ == "__main__": 
    source = sys.argv[1] 
    td = MyClass() 
    needed_stuff = td.convert(source) 
    print(needed_stuff)