在asking a question about reflection我問:python函數/方法調用有什麼靜態的嗎?
好的答案。但是說
myobject.foo()
和x = getattr(myobject, "foo"); x();
有區別。即使它只是化妝品。在第一個foo()靜態編譯。在第二種情況下,字符串可以通過多種方式生成。 - 喬1小時前
這得到了答案:
嗯,馬鈴薯/馬鈴薯...在python,niether是靜態編譯,所以它們都或多或少等價。 - SWeko 1小時前
我知道Python對象的成員都存儲在一個字典,這一切都是動態的,但我認爲,鑑於以下代碼:
class Thing():
def m(self):
pass
t = Thing()
下面的代碼會以某種方式生成.pyc文件時獲得靜態編譯:
t.m()
即編譯器知道的m()
地址,所以沒有點運行時綁定。這或運行時會緩存後續查找。
而這將總是涉及擊中詞典:
meth = getattr(t, "m")
meth()
是否所有調用視爲字典字符串查找?或者這兩個例子實際上是相同的嗎?
+1爲非常有趣的答案! – rubik 2011-01-20 12:54:38