2010-04-23 18 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