Когда вы вызываете a.get(5)
, вы вызываете конструктор класса B
внутри указанного c экземпляра A
и возвращаете только что созданный экземпляр B
.
Мы можем проверить это довольно просто:
>>> type(a.get(5))
<class '__main__.A.B'>
Однако каждый раз, когда мы вызываем вышеуказанный код, мы не получаем один и тот же экземпляр B
:
>>> a.get(5) == a.get(5)
False
Мы даем То же входное значение для конструктора, но поскольку они являются двумя отдельно созданными экземплярами, они не равняются друг другу.
Однако мы можем получить значение нового экземпляра, просто вызвав атрибут value
:
>>> a.get(5).value
5
Здесь мы можем сделать еще одно сравнение, и мы видим, что теперь оно возвращает True
, поскольку значения, содержащиеся в атрибутах, одинаковы:
>>> a.get(5).value == a.get(5).value
True