Когда переписываете python add , mul и т.д. магическими методами, кажется нормальным создавать новый экземпляр класса и затем возвращать его.Например:
class test_class_simple:
def __init__(self, x):
self.x = x
def __add__(self, other):
return test_class(self.x + other.x)
Однако другой вариант заключается в том, чтобы метод add скопировал существующий экземпляр, а затем просто изменил его значение:
import copy
def __add__(self, other):
new = copy.deepcopy(self)
new.x = self.x + other.x
return new
При работесо сложными классами с большим количеством переменных кажется более простым и, вероятно, также более безопасным их глубокое копирование (как в примере 2) и затем изменение конкретного атрибута, на который влияет магический метод.Однако я не вижу много примеров того, как люди делают это, и поэтому мне интересно, есть ли какой-то недостаток к этому дальше по линии, о которой я не знаю.Есть ли вред этому подходу?
Спасибо!