python 类定义编译执行

文件编译后形成一个字节码pyCodeObject对象

文件中的函数(是一个不同的codeBlock) 也会形成一个pyCodeObject对象存储在 文件pyCodeObject的 co_cnosts常量数据字典中


python class A(object): 和 def f(): 类似

在当前 pyFrameObject (sys._getframe().f_locals) 局部命名空间中新建一个 符号 绑定一个 类


a=A() 类的调用操作实际上是调用A.__class__ 的  tp_call操作的 类似c++的仿函数



>>> def A(object):
...  pass
...  a=1
... 
>>> import sys
>>> print sys._getframe().f_locals
{'A': <function A at 0x7fcc18dd7668>, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, 'sys': <module 'sys' (built-in)>, '__name__': '__main__', '__doc__': None}
>>> class A(object):
...  pass
...  a=1
... 
>>> print sys._getframe().f_locals
{'A': <class '__main__.A'>, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, 'sys': <module 'sys' (built-in)>, '__name__': '__main__', '__doc__': None}

你可能感兴趣的:(python 类定义编译执行)