今日、オフィスでいくつかのコードを調べたところ、次のコードが見つかりました。それは私に衝撃を与えました。
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.003 秒と 0.005 秒でした (全プロセス: 0.069 秒)。
私は考えて速度を落としていますが、すべてのコードsetattr
をgetattr
書き直せば速度が向上するかどうかはわかりません。
obj.attribute = value は よりも速く実行されますsetattr(obj,'attribute',value)
か?