![](https://img.haomeiwen.com/i13717038/4049458eca07e3b6.png)
构造方法 申请一个空间
析构方法 释放一个空间之前执行
某对象借用了操作系统的资源,还要通过析构方法归还回去 : 文件资源 网络资源.
![](https://img.haomeiwen.com/i13717038/f7f46df4ef38c5ae.png)
![](https://img.haomeiwen.com/i13717038/bb0655b14f6c5b35.png)
![](https://img.haomeiwen.com/i13717038/c2e4a02bbec97a41.png)
![](https://img.haomeiwen.com/i13717038/10f1a8b99a313c95.png)
不管是主动还是被动,这个f对象总会被清理掉,被清理掉就触发__del__方法,触发这个方法就会归还操作系统的文件资源
python解释器在内部就能搞定的事儿
申请一块儿空间 操作系统分配给你的
在这一块儿空间之内的所有事儿 归你的python解释器来管理
对象 --> 内存
![](https://img.haomeiwen.com/i13717038/45095672ad25e2b7.png)
item系列 和对象使用[]访问值有联系
![](https://img.haomeiwen.com/i13717038/5953a7e196064eb0.png)
在内置的模块中,
有一些特殊的方法,要求对象必须实现__getitem__/__setitem__才能使用
![](https://img.haomeiwen.com/i13717038/fb73dabe90af7d89.png)
hash方法
底层数据结构基于hash值寻址的优化操作
hash是一个算法
能够把某一个要存在内存里的值通过一系列计算,
保证不同值的hash结果是不一样的
'127647862861596' ==> 927189778748
对同一个值在多次执行python代码的时候hash值是不同
但是对同一个值 在同一次执行python代码的时候hash值永远不变
print(hash('abc')) # 6048279107854451739
print(hash('abc'))
print(hash('abc'))
字典的寻址 - hash算法
![](https://img.haomeiwen.com/i13717038/47fce6692189aaf8.png)
![](https://img.haomeiwen.com/i13717038/316fde6ad2b2f119.png)
set集合
![](https://img.haomeiwen.com/i13717038/a595da192e8bb77c.png)
![](https://img.haomeiwen.com/i13717038/b1a1bcad0c859125.png)
![](https://img.haomeiwen.com/i13717038/6d85cd5cecc97fde.png)
![](https://img.haomeiwen.com/i13717038/0459b7e41a9bda4c.png)
hash(obj) #obj内部必须实现了__hash__方法
__eq__
![](https://img.haomeiwen.com/i13717038/9e754ed880533ebc.png)
网友评论