• 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()     稳健操作符

  • 相关阅读:
    TP
    vim manual 个人笔记
    关于动画属性
    过渡
    关于 css3 的filter属性
    html 中行内元素和块级元素区别
    JS以不同的格式保存文件内容
    64位Kali无法顺利执行pwn1问题的解决方案
    鱼龙混杂 · 数据结构学习笔记(01)
    Terminal(终端) 在 OS X下如何快速调用
  • 原文地址:https://www.cnblogs.com/hfbk/p/9410662.html
Copyright © 2020-2023  润新知