私は200k LOCのPython 2.3ベースの大きなインストールを持っています。マイグレーションプロジェクトの一環として、すべての古いスタイルのクラスのすべての属性ルックアップをインターセプトする必要があります。Python 2.3の古いスタイルのmixinクラスで__getattr__を傍受していますか?
古いレガシーコード:
class Foo(Bar):
...
私の考えはFoo.__getattr__
がMixin.__getattr__
に を解決するために、私は再帰に常に実行していますが
class Foo(Bar, Mixin):
...
class Mixin:
def __getattr__(self, k)
print repr(self), k
return Foo.__getattr__(self, k)
のような一般的なミックスインクラスを注入することです。
Python 2.3の古いスタイルのクラスのコードを修正する方法はありますか?
古いスタイルのクラスは既に '__getattr__'を実装していますか? – donkopotamus
もちろん、__getattribute __()は新しいスタイルのクラスで導入されました –
ミックスインを追加して '__getattr__'を実装する前に**あなたのコードベース**に古いスタイルのクラス**を追加することを意味します** – donkopotamus