qr_1 = Query([1, 2, 3]) # создан экземпляр Query (условно id = 0)), создана ссылка на него qr_1
qr_2 = qr_1 # создана ссылка на объект Query (id=0), qr_2
qr_1 = qr_1 + Query([10, 12])
# создан экземпляр Query([10, 12] (условно id=1)), вызван метод __add__ объекта по ссылке qr_1, тот,
#который id=0,
#__add__ вернул НОВЫЙ экземпляр Query id=2, которому была присвоена ссылка с именем qr_1
#id=1 уничтожен, так как на него никто не ссылается
print(qr_1) # [1 -> 2 -> 3 -> 10 -> 12] # выводим в консоль объект id=2
print(qr_2) # [1 -> 2 -> 3] # # выводим в консоль объект id=0, ссылка то осталась, объект не менялся
UPD:
class Query:
instance_test_id = -1
def __init__(self, stack):
self.test_id = Query.instance_test_id + 1
Query.instance_test_id += 1
self.arr = stack
def __add__(self, query):
return Query(self.arr + query.arr)
def __str__(self):
return '[' + ' -> '.join([str(x) for x in self.arr]) + ']'
qr_1 = Query([1, 2, 3])
print(qr_1, f"test_id={qr_1.test_id}") #>> [1 -> 2 -> 3] test_id=0
qr_2 = qr_1
print(qr_2, f"test_id={qr_2.test_id}") #>> [1 -> 2 -> 3] test_id=0
qr_1 = qr_1 + Query([10, 12])
print(qr_1, f"test_id={qr_1.test_id}") #>> [1 -> 2 -> 3 -> 10 -> 12] test_id=2
print(qr_2, f"test_id={qr_2.test_id}") #>> [1 -> 2 -> 3] test_id=0