今天在办公室查了一些代码,发现如下代码。它震惊了我。
class XXXX():
def __init__(self, k, v):
for i in range(len(k)):
setattr(self, k[i], v[i])
然后我发现大部分的类都是用同样的方式写的。这意味着所有的类都是同一个类,唯一不同的是他们的名字。
在这个项目setattr()
中用于设置属性和getattr()
用于获取属性在profile logsetattr
中被调用了2700次,getattr
被调用了3800次。耗时分别为 0.003 秒和 0.005 秒(整个过程:0.069 秒)。
尽管我确实认为setattr
并getattr
降低了速度,但我不确定重写所有代码是否会使其变得更好。
obj.attribute = value 运行得比 快setattr(obj,'attribute',value)
吗?