python className未定义NameError

时间:2014-03-10 07:18:30

标签: python class nameerror

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

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)

1 个答案:

答案 0 :(得分:7)

问题是你的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)