Я хочу понять, как python решает создать новый экземпляр объекта или использовать существующий. Я смотрел на то, что, как мне кажется, вызывает у меня проблему, и подозреваю, что это из-за моего непонимания того, что происходит под капотом.
Рассмотрим этот пример в файле dummy.py: 1003
import unittest
class Addition:
def __init__(self, a, b):
self.__a = a
self.__b = b
def do_addition(self):
return self.__a + self.__b
class IsolatedTests(unittest.TestCase):
def custom_add(self, a, b):
addition = Addition(a, b)
print(addition)
return addition.do_addition()
def test_case_1(self):
a = 5
b = 10
self.assertEqual(15, self.custom_add(a, b))
def test_case_2(self):
a = 20
b = 15
self.assertEqual(35, self.custom_add(a, b))
def test_case_3(self):
a = 99
b = 105
self.assertEqual(204, self.custom_add(a, b))
class CombinedTests(unittest.TestCase):
def custom_add(self, a, b):
addition = Addition(a, b)
print(addition)
return addition.do_addition()
def test_case_1(self):
a = 5
b = 10
self.assertEqual(15, self.custom_add(a, b))
a = 20
b = 15
self.assertEqual(35, self.custom_add(a, b))
a = 99
b = 105
self.assertEqual(204, self.custom_add(a, b))
Здесь я фактически получаю один и тот же точный адрес памяти для всех 3 экземпляров объекта сложения.
<dummy.Addition object at 0x02BBBF70>
<dummy.Addition object at 0x02BBBF70>
<dummy.Addition object at 0x02BBBF70>
Может кто-нибудь помочь мне понять, в чем разница? Спасибо как всегда!