今天在办公室查了一些代码,发现如下代码。它让我震惊。
class XXXX():
def __init__(self, k, v):
for i in range(len(k)):
setattr(self, k[i], v[i])
Run Code Online (Sandbox Code Playgroud)
然后我发现大部分类都是用同样的方式编写的。这意味着所有的类都是同一个类,唯一不同的是它们的名称。
本项目setattr()中用于设置属性,getattr()用于获取属性。在profile log中setattr被调用了2700次,getattr被调用了3800次。耗时分别为0.003sec和0.005sec(整个过程:0.069sec)。
尽管我确实考虑setattr并getattr降低了速度,但我不确定重写所有代码是否会使其更好。
obj.attribute = value 是否比 运行得更快setattr(obj,'attribute',value)?
是的,getattr而且setattr速度要慢得多,至少在 CPU 级别上是这样。
由于__init__每个对象只调用一次,所以除非您创建很多很多对象,否则我不会担心这一点。
如果对象的属性被多次访问,那么重写这些部分可能是值得的。不过,您应该首先进行一些仔细的分析。
| 归档时间: |
|
| 查看次数: |
4226 次 |
| 最近记录: |