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