__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__) , 以及模块初体验的更多相关文章

  1. __del__,item系列 ,hash方法,__eq__,

    # 构造方法 申请一个空间# 析构方法 释放一个空间 # 某个对象借用了操作系统的资源,还要通过析构方法归还回去:文件资源 网络资源 # 垃圾回收机制 class A: def __del__(sel ...

  2. Docker学习系列(二)Docker初体验

    一.系统要求 Docker的安装,需要在CentOS 7.0+版本,内核至少3.10,64-bit uname --r [randy@randysun ~]$ uname --r -.el7.x86_ ...

  3. [ python ] 反射及item系列

    反射 什么是反射? 通过字符串的形式操作对象相关属性.python中的事物都是对象: 关键方法: (1)getattr:获取属性 (2)setattr:设置属性 (3)hashattr:检测是否含有属 ...

  4. python 全栈开发,Day24(复习,__str__和__repr__,__format__,__call__,__eq__,__del__,__new__,item系列)

    反射: 使用字符串数据类型的变量名来使用变量 wwwh即what,where,why,how  这4点是一种学习方法 反射 :使用字符串数据类型的变量名来使用变量 1.文件中存储的都是字符串 2.网络 ...

  5. 1、__del__ 2、item系列 3、__hash__ 4、__eq__

    1.__del__   析构方法       释放一个空间之前之前 垃圾回收机制   2.item系列   和对象使用[ ]访问值有联系 __getitem__ __setitem__ __delit ...

  6. Python开发基础-Day11内置函数补充、匿名函数、递归函数

    内置函数补充 python divmod()函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b) 语法: divmod(a, b) #a.b为数字,a为除数,b ...

  7. python基础之内置函数补充、匿名函数、递归函数

    内置函数补充 python divmod()函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b) 语法: 1 divmod(a, b) #a.b为数字,a为除数 ...

  8. python面向对象( item系列,__enter__ 和__exit__,__call__方法,元类)

    python面向对象进阶(下)   item系列 __slots__方法 __next__ 和 __iter__实现迭代器  析构函数 上下文管理协议 元类一.item系列 把对象操作属性模拟成字典的 ...

  9. python3全栈开发-内置函数补充,反射,元类,__str__,__del__,exec,type,__call__方法

    一.内置函数补充 1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() print(isinstan ...

随机推荐

  1. docker 安装nginx并挂载配置文件和www目录以及日志目录

    ---恢复内容开始--- 一 首先 docker pull nginx 二 docker run --name myNginx -d -p 80:80 -v e:/docker/nginx/www:/ ...

  2. python移植性提示

    移植性提示 2.1 预计在python3.0中,运算符/只能执行True除法.3.0发布后,程序员要更新自己的程序,以兼容新行为. 3.1 python2.0版本开始引入增量赋值符号,在老版本pyth ...

  3. 批处理学习:for语句详解

    大纲 一 前言 二 for语句的基本用法 三 for /f (delims.tokens.skip.eol.userbackq.变量延迟) 四 for /r (递归遍历) 五 for /d (遍历目录 ...

  4. [转载]How to Install Firefox 33 on CentOS, Redhat and Other Linux Distributions

    FROM: http://tecadmin.net/install-firefox-on-linux/ Firefox 33 has been released for Systems and And ...

  5. ansible自动化工具使用

    1.服务端配置 安装即可,无需启动,在安装ansible之前需要配置epel源 [root@m01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirr ...

  6. Elasticsearch教程(六) elasticsearch Client创建

    Elasticsearch  创建Client有几种方式. 首先在 Elasticsearch  的配置文件 elasticsearch.yml中.定义cluster.name.如下: cluster ...

  7. Material Design (二),TextInputLayout的使用

    前言  一般登录注冊界面都须要EditText这个控件来让用户输入信息,同一时候我们通常会设置一个标签(使用TextView)和EditText的hint属性来提示用户输入的内容,而设计库中高级组件T ...

  8. JAVA Eclipse中的Android程序如何使用线程

    我们先单独定义一个java类,名字可以任意取(比如叫做ClientHeartBeat类,我当前在做一个socket通信的客户端,我们假定需要一个可以测试心跳的程序),注意他要继承Thread,然后重载 ...

  9. 在web目录下 批量寻找配置文件信息

    dir /s /b *.php *.inc *.conf *.config >>list.txt" W4 I2 U+ N/ B6 K @0 r r8 ^ T00LS: _$ j! ...

  10. mysql kill process解决死锁

    mysql使用myisam的时候锁表比较多,尤其有慢查询的时候,造成死锁.这时需要手动kill掉locked的process.使他释放. (以前我都是重起服务)..惭愧啊.. 演示:(id 7是我用p ...