python函数代码块是以del开头的_python 之前函数补充(__del__, item系列, __hash__, __eq__) , 以及模块初体验...

本文探讨了Python中`__str__`和`__repr__`方法的作用,重点讲解了如何确保字符串输出的规范性,并介绍了析构方法`__del__`在资源管理中的应用。通过实例说明了类继承中这两个方法的查找和调用过程。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值