時にはそれはすなわち、既存のオブジェクトの初期化方法として__init__
を使用するのが合理的になります。コンストラクタとしてではなく、初期化のための通常のメソッドとして__init__を使用できますか?
class A():
def __init__(self, x):
self.x = x
def set_state_from_file(self, file):
x = parse_file(file)
self.__init__(x)
この実装する代わりに、私は以下を参照してください。
class A():
def __init__(self, x):
self.init(x)
def init(self, x):
self.x = x
def set_state_from_file(self, file):
x = parse_file(file)
self.init(x)
それはオーバーと私には思えますコードの複雑さ。このような状況についてのガイドラインはありますか?
ファイルを解析するために、非メンバ関数を持っている、そして新しいインスタンスを作成しないのはなぜ? [Single Responsibility Principle](https://en.wikipedia.org/wiki/Single_responsibility_principle)に違反する別のソースからクラスを初期化するたびに、クラスを書き直す必要があるようです。 –
@Peter Wood、 '__setstate__'の' __init__'はどうですか? – Sklavit