__del__
item系列
  __getitem__
  __setitem__
  __delitem__
__hash__
__eq__
构造方法  申请一个空间
析构方法 释放一个空间之前执行
某对象借用了操作系统的资源,还要通过析构方法归还回去 : 文件资源 网络资源
# 垃圾回收机制
class A:
def __del__(self):
# 析构方法 del A的对象 会自动触发这个方法
print('执行我了')
a = A()
del a # 对象的删除 del
print(a)
class File():
# 处理文件的
def __init__(self,file_path):
self.f = open(file_path)
self.name = 'alex' def read(self):
self.f.read(1024) def __del__(self): # 是去归还/释放一些在创建对象的时候借用的一些资源
# del 对象的时候 程序员触发
# python解释器的垃圾回收机制 回收这个对象所占得内存的时候 python自动触发的
self.f.close()
f = File('文件名')
f.read()

不管是主动还是被动,这个f对象总会被清理掉,被清理掉就触发__del__方法,触发这个方法就会归还操作系统的文件资源

python解释器在内部就能搞定的事儿
申请一块儿空间 操作系统分配给你的
在这一块儿空间之内的所有事儿 归你的python解释器来管理
对象 --> 内存
f = open('wenjian')  # python --> 操作系统 --> 硬盘里的文件 --> 文件操作符
f.close()
# 文件操作符
#del f #释放完后自动帮你关闭文件
item系列 和对象使用[]访问值有联系
obj = {'k':'v'}
print(obj) # 字典的对象
print(obj['k'])
在内置的模块中,
有一些特殊的方法,要求对象必须实现__getitem__/__setitem__才能使用
class B:
def __init__(self,lst):
self.lst = lst
def __getitem__(self, item):
return self.lst[item]
def __setitem__(self, key, value):
self.lst[key] = value
def __delitem__(self, key):
self.lst.pop(key)
b = B(['','','ccc','ddd'])
print(b.lst[0])
print(b[0])
b[3] = 'alex'
print(b.lst)
del b[2]
print(b.lst)
hash方法
底层数据结构基于hash值寻址的优化操作
hash是一个算法
能够把某一个要存在内存里的值通过一系列计算,
保证不同值的hash结果是不一样的
'127647862861596' ==> 927189778748
对同一个值在多次执行python代码的时候hash值是不同
但是对同一个值 在同一次执行python代码的时候hash值永远不变
print(hash('abc')) # 6048279107854451739
print(hash('abc'))
print(hash('abc')) 字典的寻址  - hash算法
d = {'key':'value'}
# hash - 内置函数

set集合

se = {1,2,2,3,4,5,'a','b','d','f'}
print(se)
d = {'key':'v1','key':'v2'}
print(d['key'])

hash(obj) #obj内部必须实现了__hash__方法

__eq__
class A:
def __init__(self,name,age):
self.name = name
self.age = age
def __eq__(self, other):
if self.name == other.name and self.age == other.age:
return True
a = A('alex',83)
aa = A('alex',83)
aa2 = A('alex',83)
aa3 = A('alex',83)
aa4 = A('alex',83)
aa5 = A('alex',83)
aa6 = A('alex',83)
print(a,aa)
print(aa3 == aa == aa4) # ==这个语法 是完全和__eq__
												

最新文章

  1. Nodejs从有门道无门菜鸟起飞教程。
  2. cg资讯网址
  3. HDFS中高可用性HA的讲解
  4. foxmail创建163公司企业邮箱的时候会出现ERR Unable to log on
  5. jni.h头文件详解二
  6. 5.5 Function类型
  7. servlet请求转发与重定向的差别------用生活实例来形象说明两者的差别
  8. The literal of int xxxxx is out of range
  9. (N叉树 递归) leetcode589. N-ary Tree Preorder Traversal
  10. Mac搭建SVN服务器+Cornerstone连接服务器
  11. window的cmd使用
  12. 网口扫盲二:Mac与Phy组成原理的简单分析(转)
  13. 使用ionic开发时用遇到监听手机返回按钮的问题~
  14. Eclipse集成SonarLint
  15. es5与es6继承思考
  16. FastDFS教程Ⅰ-文件服务器安装与Nginx配置
  17. [Jenkins] 在Jenkins执行单个test suite
  18. Prometheus Node_exporter 之 Basic CPU / Mem Graph
  19. mongodb的学习-2-简介
  20. zookeeper分布式锁和服务优化配置

热门文章

  1. 1、Android-活动(下)
  2. Owin+ASP.NET Identity浅析系列(一)用户登录注册
  3. 前端页面 SEO 优化
  4. [转]Ribbon界面介绍(1)
  5. jQuery 表单元素取值与赋值方法总结
  6. 【Dubbo源码阅读系列】之远程服务调用(上)
  7. Redis基本讲解
  8. Java中关于Servlet中请求中文乱码及文件下载
  9. 2019年,200道面试题打造最受企业欢迎的iOS程序猿!
  10. activemq的高级特性:消息存储持久化