1

私は__getattribute__クラスのために再実装しています。

__getattribute__誤った (もちろん、失敗が予想されることを意味します) 属性の提供の失敗 (実装が非常に複雑であることが判明したため) に注意したいと思います。そのために、コードが発生する直前に属性を検索/提供できなかった場合、警告を記録しAttributeErrorます

私は知っています:

  1. __getattribute__実装はできるだけ小さくすることをお勧めします。
  2. __getattribute__実装が呼び出された方法/理由に基づいて異なる動作をすることは、間違っていると見なされます。
  3. try/exceptを使用する代わりに、属性にアクセスするコードを使用することもできますhasattr

TL;DR : それにもかかわらず、 (属性にアクセスする「本物の」試みとは対照的に) が原因で への呼び出し__getattribute__が行われたかどうかを検出したいと思います。hasattr

4

2 に答える 2