del a
действительно не уничтожает объект, на который указывает переменная a
, он только удаляет переменную a
из текущего пространства имен.После этого диктат живет (поскольку другой диктант все еще ссылается на него) и, следовательно, все еще ссылается на второй диктат b
.Точно так же, del b
не приводит к тому, что счет пересчета первого диктанта достигает нуля, потому что, пока он жив, он ссылается на второй диктат, так что один не может быть удален и поддерживает другой.Извините, это звучит запутанно, я не совсем уверен, как это выразить.
В конце концов, это выглядит так (громоздкие прямоугольники - это объекты, стрелки - ссылки):
+----------+ +----------+
| dict 1 | | dict 2 |
| | <- | key 'a' |
| key 'b' | -> | |
+----------+ +----------+