python“运行模块”导致错误

时间:2014-04-08 22:49:30

标签: python

我是Python的初学者,这是我的测试代码

def main():
Test1()
Test2()

if __name__ == "__main__":
main()

class Test1:

def __init__(self):
    print("test1");

class Test2:

def __init__(self):
    print("test2");

当我尝试“运行模块”时,我得到了

  

NameError:名称'Test1'未定义

我该如何运行main方法?

2 个答案:

答案 0 :(得分:1)

您需要在文件底部移动main。你也不必使用;

# python doesn't "know" what Test1 is at this point
class Test1:
    def __init__(self):
        print("test1")

# At this point python "knows" what is Test1 and you can use it
class Test2:
    def __init__(self):
        print("test2")

# Thats why main goes in the end of the file always
# Because here python is aware of Test1 and Test2
def main():
    Test1()
    Test2()

if __name__ == "__main__":
    main()

答案 1 :(得分:0)

在主函数之前移动Test1和Test2的定义。

class Test1:
    def __init__(self):
        print("test1")

class Test2:
    def __init__(self):
        print("test2")

def main():
    Test1()
    Test2()

if __name__ == "__main__":
    main()

OR

移动"如果__name__ ==" __ main __":"在定义Test1和Test2类之后阻塞。

def main():
    Test1()
    Test2()

class Test1:
    def __init__(self):
        print("test1")

class Test2:
    def __init__(self):
        print("test2")

if __name__ == "__main__":
    main()

对于C编程语言中的不完整定义,它应该是一个类似的问题。当您执行#34内的代码时;如果__name__ ==" __ main __":",则调用函数main()。在main()函数中,您将创建两个对象Test1()和Test2()。但是从文件的开头到"如果__name__ ==" __ main __":"阻止,这两个类没有定义为Test1()和Test2()。