gpt4 book ai didi

python-3.x - setattr() 和 getattr() 会显着降低速度吗?

转载 作者:行者123 更新时间:2023-12-01 05:28:15 25 4
gpt4 key购买 nike

今天在办公室查了一些代码,发现如下代码。它让我震惊。

class XXXX():
def __init__(self, k, v):
for i in range(len(k)):
setattr(self, k[i], v[i])

然后我发现大部分类都是用同样的方式编写的。这意味着所有的类都是同一个类,唯一不同的是它们的名称。

在这个项目中 setattr()用于设置属性和 getattr()用于获取配置文件日志中的属性 setattr被调用了 2700 次和 getattr被调用了 3800 次。耗时分别为0.003sec和0.005sec(整个过程:0.069sec)。

虽然我确实认为 setattrgetattr降低速度,我不确定重写所有代码是否会使其更好。

obj.attribute = value 是否比 setattr(obj,'attribute',value) 运行得更快?

最佳答案

是的,getattrsetattr慢得多,至少在 CPU 级别。

__init__每个对象只调用一次我不会担心,除非你创建了很多很多对象。

如果对象的属性被多次访问,重写这些部分可能是值得的。不过,您应该先进行一些仔细的分析。

关于python-3.x - setattr() 和 getattr() 会显着降低速度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12798653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com