在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