Python 的交互控制台有一个特性是 _ 会自动保存上一个表达式输出的非 None 值.
_
None
因此在删除y的以后 SomeClass 实例的引用计数器的值为1,而不是0.
SomeClass
所以 __del__ 不会被调用。
__del__
当有新的表达式在控制台输出其他非 None 值时, _ 就会改为保存新的输出值。
这时 SomeClass 实例的引用计数器的值就会变成0,GC就会启动调用 __del__ 并回收对象。