sympy
内のすべてのオブジェクトがBasicクラスのサブクラスであり、そしてそれらはすべて__init__
なし__new__
を使用し、主にそれがsympyが `__init__`の代わりに` __new__`をオーバーライドするのはなぜですか?
def __new__(cls, some, parameter, **others):
obj = parentclass.__new__(cls, **others)
obj.some = some
obj.parameter = parameter
return obj
def __init__(self, some, parameter, **others):
parentclass.__init__(self, **others) # or super().__init__(...)
self.some = some
self.parameter = parameter
よう__init__
を使用しての違いは何ですか?のようなものですか
私は彼らがすべて不変であると思われると思いますか? –
@MartijnPieters - 私は彼らがすでに行われている作業をやり直すのを避けるためにハッシュ可能である必要があると信じています。 – mgilson
それは歴史的な事故かもしれません。古いバージョン(0.5.xなど)は、それが正当化された可能性があるかなり複雑な構造を持っています。 – ecatmur