我有一个我需要实例化的类才能调用它包含的方法。当我从另一个类访问它时它工作正常,但是当我从终端运行时它说:
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)
答案 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)