当前位置: 代码迷 >> python >> python className未定义NameError
  详细解决方案

python className未定义NameError

热度:35   发布时间:2023-07-14 08:44:01.0

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

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__"块位于类定义中。 这将导致错误,因为在将类绑定到名称之前, if的代码将作为所创建类的一部分运行。

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

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)
  相关解决方案