私はクラスを持っていBase
ます。クラスでその機能を拡張したいと思いDerived
ます。私は書く予定でした:
class Derived(Base):
def __init__(self, base_arg1, base_arg2, derived_arg1, derived_arg2):
super().__init__(base_arg1, base_arg2)
# ...
def derived_method1(self):
# ...
すでにインスタンスがあり、それに基づいてインスタンスBase
を作成したい場合があります。つまり、オブジェクトを共有する(最初から再作成しない) インスタンスです。それを行うための静的メソッドを書くことができると思いました:Derived
Derived
Base
b = Base(arg1, arg2) # very large object, expensive to create or copy
d = Derived.from_base(b, derived_arg1, derived_arg2) # reuses existing b object
しかし、それは不可能のようです。これを機能させる方法が見つからないか、または (より可能性が高い) 機能できない大きな理由を見逃しているかのどちらかです。誰かがそれがどれであるか説明できますか?
[もちろん、継承ではなく構成を使用すれば、これはすべて簡単に実行できます。Base
しかし、すべてのメソッドをDerived
throughに委譲することは避けたいと思っていました__getattr__
。]