本来是想看看各类变量和成员变量相互关系,结果下面几行代码让对执行顺序产生了一点疑问
#!/usr/bin/env python # coding = utf-8 class myClass: a = 1 print 'class: ' + str(id(a)) def __init__(self): print 'init: ' + str(id(a)) def foo(self, a): print 'foo: ' + str(id(a)) if __name__ == '__main__': a = 2 print 'main: ' + str(id(a)) lihui = myClass() lihui.foo(a)
有兴趣可以敲一敲,看看class和main谁先打印~!
然后可以继续看看下面交换下顺序的结果
#!/usr/bin/env python # coding = utf-8 if __name__ == '__main__': a = 2 print 'main: ' + str(id(a)) class myClass: a = 1 print 'class: ' + str(id(a)) def __init__(self): print 'init: ' + str(id(a)) def foo(self, a): print 'foo: ' + str(id(a)) lihui = myClass() lihui.foo(a)
对比两者的结果,的确不能以C里的main以及调用顺序来想象脚本语言的任性,因为它有自己的文件结构,有些代码都是按照缩进来区分载入执行顺序,这里就算把if __name__ == ‘__main__’:这行去掉,根本不影响结果