シナリオ
クラスのインスタンスをデータファイルに保存し、後で再度ロードできるようにするオブジェクト指向のアプローチをPythonで探しています。私の現在のアプローチは次のようになります。
class A(object):
def __init__(self, ComplexParam1, ComplexParam2):
self.ComplexParam1 = ComplexParam1
self.ComplexParam2 = ComplexParam2
@staticmethod
def Create(EasyParam1, EasyParam2):
#do some complex calculation to get ComplexParam1 and ComplexParam2 from EasyParam1 and EasyParam2
return A(ComplexParam1, ComplexParam2)
def Save(self, Filename):
#write ComplexParam1 and ComplexParam2 to disc
@staticmethod
def Load(Filename):
#read ComplexParam1 and ComplexParam2 and call constructor
return A(ComplexParam1, ComplexParam2)
ご覧のとおりComplexParam1
、 およびは計算されるパラメータであり、取得が非常に複雑なためComplexParam2
、オブジェクトの最初の作成には使用されませんが、およびは「既知の」パラメータです。あたかもが整数で、がに基づいて構築された大きな行列であるかのように考えてください。A
EasyParam1
EasyParam2
EasyParameters
ComplexParameters
EasyParameters
したがって、上記のセットアップを使用して、ファイルとの間Save
でLoad
オブジェクトをやり取りしています。ここでCreate
は、コンストラクターを使用して以来ComplexParam1
、ComplexParam2
ファイルに保存されているため、再度計算する必要はありません。
問題
これまで、上記のアプローチは私にとってはうまく機能していました。ただし、このスキームがクラス継承でも使用される場合、問題が発生します。だから私は私の問題に対するより良くてきれいな解決策を探しています。
C++ では、コンストラクターをオーバーロードして、クラスの 2 つの作成を可能にしますが、これは Python ではサポートされていません。
ヘルプ、リンク、提案は大歓迎です。