Hello~大家好~这里是Paradoxical的wtf课堂第一期,接下来Paradoxical会和你一起学习python的奇妙特性哦~
今天学习的是类和对象的相关知识。
可以看到第一句代码和第二句代码对比了两个对象,而两个对象应该是不同。但是第三句代码对比两个对象的哈希值却是相同的。第四句代码对比了两个对象在内存中的地址,也是相同的。这是为啥鸭?来看看解释。
原来是跟对象的生命周期有关。解释中对类进行了改写,让我们更加清晰地看到对象的创建和销毁过程。
第一句代码用is比较两个对象,因为同一行代码连续创建两个对象,第一个对象还没销毁时就创建了第二个对象,所以它们的在内存中的地址不同,用is比较的结果是False。
而第二局代码创建第一个对象后把内存地址传给id()后就销毁了,创建第二个对象时就会在同一个内存地址创建,所以它们的对比它们的内存地址会是True。