今日、オフィスでいくつかのコードを調べたところ、次のコードが見つかりました。それは私に衝撃を与えました。
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)か?