2010-04-23 37 views
0

有这样一类:如何在Python中反汇编对象创建?

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

eggs = Spam('systempuntoout') 

使用dis,是有可能怎么看类别和相应六角身份的一个实例被创建?

+0

你为什么不试试? – extraneon 2010-04-23 09:07:32

+0

我在发帖之前已经尝试过了,我认为这是不可能的。 – systempuntoout 2010-04-23 09:10:14

回答

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从做上面的转储,但随着代码的增长,大多数人很快就无法读取它。

+0

对不起马塞洛,但我不明白你的答案,它以任何方式赞同我的问题:)? – systempuntoout 2010-04-23 09:22:35

+0

也许我误解了你的问题。 'dis'模块显示编译函数和方法的字节码。如果你在你的类中调用'dis.dis(Spam)',你会看到init方法的字节码实现。这是你想要的,还是你在寻找别的东西? – 2010-04-23 10:37:34

+0

是的,我在谈论dis.dis(垃圾邮件)谢谢。是否有可能看到何时创建对象ID? – systempuntoout 2010-04-23 13:14:13