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