python 之前函数补充(__del__, item系列, __hash__, __eq__) , 以及模块初体验
__str__ : str(obj) , 需求必须实现了 __str__, 要求这个方法的返回值必须是字符串 str 类型
__repr__ (意为原型输出): 是 __str__ 的备胎(在找不到__str__的时候返回__repr__) ,吐过有__str__方法, 那么先去执行__str__ 方法 并使用__str__ 的返回值. 如果没有__str__ 那么print %s str 都会执行 repr.
注意:
#在子类中使用__str__ , 先找子类的__str__ ,没有的话要向上找, 只要父类不是objict,就执行父类中的__str__但是如果除了objict之外的父类都没有__str__方法,就执行子类的__repr__方法, 如果子类也没有,就要向上继续找父类中的__repr__方法. 直到找不到为止,再去执行object类中的__str__方法.
例如:
class A:
def __init__(self, name):
self.name = name def __str__(self): # 定义字符串
return ' **%s** ' % self.name def __repr__(self):
return self.name class B(A): def __repr__(self):
return '***' a = B('alex')
print(a)
print(str(a), repr(a))
print('%s|%r' % (a, a))
构造方法 申请一个空间 (操作系统分配的)
析构方法 释放一个空间之前执行
某对象借用了操作系统的资源还要通过析构方噶归还回去 : 1 文件资源 2 网络资源( 1 2 位应用范围 )
垃圾回收机制:
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__是去归还 / 释放一些在创建对象时调用的一些资源
# del 对象的时候 需要程序员去触发(人自己写)
# python解释器的垃圾回收机制 回收这个对象所占的内存空间的时候 是python自动触发的
self.f.close() # 文件操作符 此处如果不进行这项操作, 系统的文件资源会一直被调用 而不会关闭.所以此处要定义次操作.
f = File('文件名')
f.read()
不管是主动还是被动,这个f 对象总会被清理掉, 被清理掉就会触发__del__ 方法, 触发这个方法就会归还操作系统的文件资源.
# 在文件操作中,
f = open ('wenjian')
# 其操作流程为: python -------> 操作系统 ---------> 硬盘里的文件 ----------> 文件操作符
f.close() 稳健操作符
python 之前函数补充(__del__, item系列, __hash__, __eq__) , 以及模块初体验的更多相关文章
- __del__,item系列 ,hash方法,__eq__,
# 构造方法 申请一个空间# 析构方法 释放一个空间 # 某个对象借用了操作系统的资源,还要通过析构方法归还回去:文件资源 网络资源 # 垃圾回收机制 class A: def __del__(sel ...
- Docker学习系列(二)Docker初体验
一.系统要求 Docker的安装,需要在CentOS 7.0+版本,内核至少3.10,64-bit uname --r [randy@randysun ~]$ uname --r -.el7.x86_ ...
- [ python ] 反射及item系列
反射 什么是反射? 通过字符串的形式操作对象相关属性.python中的事物都是对象: 关键方法: (1)getattr:获取属性 (2)setattr:设置属性 (3)hashattr:检测是否含有属 ...
- python 全栈开发,Day24(复习,__str__和__repr__,__format__,__call__,__eq__,__del__,__new__,item系列)
反射: 使用字符串数据类型的变量名来使用变量 wwwh即what,where,why,how 这4点是一种学习方法 反射 :使用字符串数据类型的变量名来使用变量 1.文件中存储的都是字符串 2.网络 ...
- 1、__del__ 2、item系列 3、__hash__ 4、__eq__
1.__del__ 析构方法 释放一个空间之前之前 垃圾回收机制 2.item系列 和对象使用[ ]访问值有联系 __getitem__ __setitem__ __delit ...
- Python开发基础-Day11内置函数补充、匿名函数、递归函数
内置函数补充 python divmod()函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b) 语法: divmod(a, b) #a.b为数字,a为除数,b ...
- python基础之内置函数补充、匿名函数、递归函数
内置函数补充 python divmod()函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b) 语法: 1 divmod(a, b) #a.b为数字,a为除数 ...
- python面向对象( item系列,__enter__ 和__exit__,__call__方法,元类)
python面向对象进阶(下) item系列 __slots__方法 __next__ 和 __iter__实现迭代器 析构函数 上下文管理协议 元类一.item系列 把对象操作属性模拟成字典的 ...
- python3全栈开发-内置函数补充,反射,元类,__str__,__del__,exec,type,__call__方法
一.内置函数补充 1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() print(isinstan ...
随机推荐
- hibernate,mybatis,beetlsql 全面比較
这是我的一个综合评分.总共分为12个单项.每一个单项最高5分.最低0分. 注意.评价仅仅包括这些软件提供的标准功能,不包括第三方提供的功能,如代码生成等. 开发效率 hibernate 能获取数据库 ...
- hdu 1162 Eddy's picture (Kruskal算法,prim算法,最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 [题目大意] 给你n个点的坐标,让你找到联通n个点的一种方法.保证联通的线路最短,典型的最小生成 ...
- S5PV210之内外存学习
RAM,内部存储器,用来运行程序(DRAM,SRAM,DDR) ROM,外部存储器,存储数据.程序(硬盘,FLASH等) 内存:SRAM,静态内存,容量下,价格高,不需要初始化,上电后直接使用 DRA ...
- redis打开非英文存储显示问题
使用jedis 在redis中如果存储非英文的值,入 中文,印地语,马拉蒂语,泰米尔语等.在执行get 或者 hget的时候查询出来的数据会以16进制显示.如何显示原有的值 在redis启动的时候加上 ...
- python 处理抓取网页乱码问题一招鲜
FROM: http://my.oschina.net/012345678/blog/122355 相信用python的人一定在抓取网页时,被编码问题弄晕过一阵 前几天写了一个测试网页的小脚本,并查找 ...
- ASP.NET MVC学习---(九)权限过滤机制(完结篇)
相信对权限过滤大家伙都不陌生 用户要访问一个页面时 先对其权限进行判断并进行相应的处理动作 在webform中 最直接也是最原始的办法就是 在page_load事件中所有代码之前 先执行一个权限判断的 ...
- 转:提高ios通过率的注意点
http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=431 Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内 ...
- Java基础- super 和 this 解析
1. superkeyword表示超(父)类的意思.this变量代表对象本身. 2. super訪问父类被子类隐藏的变量或覆盖的方法.当前类假设是从超类继承而来的,当调用super.XX()就是调用基 ...
- vueAdmin使用动态路由时踩坑
在路由守护方法router.beforeEach中如果有使用动态路由,注意此时的路由对当前的router无效,下次路由时才起效. 导致的问题是---- 当页面刷新或重新打开页面时,无法找到当前路由(跳 ...
- javascript 模块引擎 (手写草稿)
1.试题: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...