有這樣一類:如何在Python中反彙編對象創建?
class Spam(object):
def __init__(self, name=''):
self.name = name
eggs = Spam('systempuntoout')
使用dis
,是有可能怎麼看類別和相應六角身份的一個實例被創建?
有這樣一類:如何在Python中反彙編對象創建?
class Spam(object):
def __init__(self, name=''):
self.name = name
eggs = Spam('systempuntoout')
使用dis
,是有可能怎麼看類別和相應六角身份的一個實例被創建?
是的,但不是很明顯從輸出,這是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從做上面的轉儲,但隨着代碼的增長,大多數人很快就無法讀取它。
對不起馬塞洛,但我不明白你的答案,它以任何方式贊同我的問題:)? – systempuntoout 2010-04-23 09:22:35
也許我誤解了你的問題。 'dis'模塊顯示編譯函數和方法的字節碼。如果你在你的類中調用'dis.dis(Spam)',你會看到init方法的字節碼實現。這是你想要的,還是你在尋找別的東西? – 2010-04-23 10:37:34
是的,我在談論dis.dis(垃圾郵件)謝謝。是否有可能看到何時創建對象ID? – systempuntoout 2010-04-23 13:14:13
你爲什麼不試試? – extraneon 2010-04-23 09:07:32
我在發帖之前已經嘗試過了,我認爲這是不可能的。 – systempuntoout 2010-04-23 09:10:14