Ogni oggetto in sympy
è una sottoclasse della classe Basic, e tutti usano __new__
senza __init__
, e per lo più si tratta di qualcosa di simile aPerché sympy sovrascrive `__new__` invece di` __init__`?
def __new__(cls, some, parameter, **others):
obj = parentclass.__new__(cls, **others)
obj.some = some
obj.parameter = parameter
return obj
Qual è la differenza di utilizzare __init__
come
def __init__(self, some, parameter, **others):
parentclass.__init__(self, **others) # or super().__init__(...)
self.some = some
self.parameter = parameter
?
Suppongo che tutti dovrebbero essere immutabili? –
@MartijnPieters - Credo che debbano essere lavabili per evitare di rifare il lavoro che è già stato fatto a.la memoizzazione. – mgilson
Potrebbe essere solo un incidente storico; le versioni precedenti (ad esempio 0.5.x) hanno una struttura significativamente più complessa in cui forse era giustificata. – ecatmur