本来是想看看各类变量和成员变量相互关系,结果下面几行代码让对执行顺序产生了一点疑问
#!/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__’:这行去掉,根本不影响结果
