如何在Python中反汇编对象?

时间:2010-04-23 09:06:02

标签: python

有这样的课程:

class Spam(object):
   def __init__(self, name=''):
      self.name = name

eggs = Spam('systempuntoout')

使用dis,是否可以看到如何创建类的实例和相应的十六进制标识?

1 个答案:

答案 0 :(得分:1)

是的,但是从输出来看并不明显,这是Python字节码的级别,例如:

>>> class Foo(object):
...   def f(x): return x * x
... 
>>> dis.dis(Foo)
Disassembly of f:
  2           0 LOAD_FAST                0 (x)
              3 LOAD_FAST                0 (x)
              6 BINARY_MULTIPLY     
              7 RETURN_VALUE        

从上面的转储中弄清楚Foo.f正在做什么并不需要太多,但随着代码大小的增长,它很快就会变得不可读。