関連:Python:インスタンスのクラスを変更するためのユースケースはありますか?
class Robe:
pass
class Dress:
pass
r = Robe()
r.__class__ = Dress
私はケースがどこ「核変換」のようなオブジェクトが存在するかどうかを把握しようとしている:Python object conversion
私は最近、Pythonはあなたがそうのようなインスタンスのクラスを変更することを可能にすることを学びましたこれは便利です。私はIDLEでこれを混乱させました。私が気づいたことは、別のクラスを割り当てることで、新しいクラスの__init__
メソッドが呼び出されないということです。ただし、必要に応じて明示的に行うこともできます。
私が考えることができるほぼすべての使用事例は、構成によってうまくいくと思いますが、私はコードの新作ですので、私は何を知っていますか? ;)
この回答は非常に徹底しているようですが、私はプログラミングに新しいので、理解するのに苦労しています。 '__new__' /コンストラクタのアスペクトを無視して、どこかのライブラリに定義されたクラスを持ち、それを継承する独自のクラスを作成した場合、後者のインスタンスを作成することができます。前者は「変質する」。しかし、単に継承されたクラスをインスタンス化するだけではどうですか?私は、コンストラクタのコンセプトや '__new__'メソッドの機能を理解していないことを認めます。 – henrebotha
@henrebotha:[Pythonデータモデル](http://docs.python.org/3/reference/datamodel.html#basic-customization)についてお読みください。クラスの '__new__'メソッドがインスタンスを構築するために呼び出されます。 'Derived()'を呼び出すと 'Derived .__ new__'が存在する場合はそれが呼び出されます。通常、 '__new__'は(' super'呼び出しを介して) 'object .__ new__'によって作成された新しいオブジェクトを返しますが、それを行う必要はありません。上記の例では、ファクトリ関数からインスタンスを取得してカスタマイズしました。 [この前の質問](http://stackoverflow.com/questions/15330755/construct-class-from-superclass-instance)も参照してください。 – Blckknght