最近私は__new__
を勉強しており、__init__
の代わりに__new__
が使用されています。時には私はどちらもうまくいくと思いますが、元の作者がなぜ__new__
を使用しているのか分かりません。この例では__init__の代わりに__new__を使用するのはなぜですか?
__init__
の代わりに__new__
を使用する理由を説明できる人はいますか?私はこの例の理由が必要です。私は__new__
と__init__
の違いを知っていますが、理由はわかりません__new__
がここで使用されています。
class MiniSubtest(object):
def __new__(cls, *args, **kargs):
self = super(MiniSubtest, cls).__new__(cls)
ret = None
if args is None:
args = []
try:
ret = self.test(*args, **kargs)
finally:
if hasattr(self, "clean"):
self.clean()
return ret
と私は__init__を使用している場合、それはまだうまくいくと思う、それは__new__を使用ホエー?
[Pythonの\ new \ _ \ _と\ _ \ _ init \ _ \ _](https://stackoverflow.com/questions/674304/pythons-use-of)の可能な複製-new-and-init) –
'__init__'と' __new__'は同じではありません。 '__new__'は実際にクラスのインスタンスを生成するメソッドです。新しいクラスインスタンスを返します。 '__new__'がインスタンスを作成すると、それは通常' self'という名前の最初の引数を介して '__init__'に渡されます。 '__init__'は、属性を初期化してインスタンスをカスタマイズできるメソッドです。 –
ヤック。ここでクラスを使用しないでください。ファクトリ関数を使用する – ppperry