Python对象内置方法(__del__和__str__)的介绍和使用调用__init__方法,在对象从内存中销毁之前自动调用__del__方法。(__del__英文状态下del左右各2个下划线)应用场景:init:改造初始化方法,可以使对象的创建更加灵活。del:如果想在对象被销毁之前做一些事情,可以考虑__del__方法。生命周期:对象是从调用类名()创建的,生命周期开始。一旦对象的__del__方法被调用,生命周期就结束了。在对象的生命周期中,您可以访问对象属性或让对象调用方法。1.1.1__del__代码走查首先是一段没有__del__方法的代码")print(black.name)执行结果:另一段代码,__del__方法classCat:def__init__(self,new_name):self.name=new_nameprint("%sishere"%self.name)def__del__(self):print("%sisgone"%self.name)black=Cat("Black")print(black.name)执行结果:执行结果小黑走了,但是我们没有调用__del__方法因为这个方法是在对象从内存中销毁之前由系统自动调用的。再次修改上面的代码,添加一个分隔符:classCat:def__init__(self,new_name):self.name=new_nameprint("%sishere"%self.name)def__del__(self):print("%sGone"%self.name)black=Cat("小黑")print(black.name)print("-"*30)问题:此时你可以猜到,小黑是要在分界线上输出Or以下输出?答案:在分隔线下方输出。原因:因为变量black是当前模块中的全局变量,当所有代码执行完毕后,系统会回收变量black,回收前会自动执行__del__方法。执行结果:使用del方法删除黑色对象代码:classCat:def__init__(self,new_name):self.name=new_nameprint("%sishere"%self.name)def__del__(self):print("%s没了"%self.name)black=Cat("小黑")print(black.name)delblackprint("-"*30)执行结果:小黑没了,下划线下输出原因:因为del关键字你可以删除一个对象。当使用del关键字删除黑色对象时,系统会自动为我们调用__del__方法。执行该方法后,会执行下面这句打印分隔线的代码。以上整体代码截图:2.1__str__方法在python中,使用print输出对象变量。默认情况下会输出这个变量所引用的对象是哪个类创建的对象,以及在内存中的地址(十六进制表示)如果开发中使用print输出对象变量时想打印自定义内容,可以使用内置方法__str__。(也就是我们不想输出默认的类和内存地址内容,而是我们要输出的内容,这时候使用内置方法__str__)注意:__str__必须返回一个字符串。2.1.1代码走查:1、默认使用print看到的代码效果:输出这个变量引用的对象是哪个类创建的对象,以及在内存中的地址。2.使用__str__内置方法classCat:def__init__(self,new_name):self.name=new_nameprint("%sishere"%self.name)def__del__(self):print("%sisgone"%self.name)def__str__(self):#必须返回一个字符串return"Iamakitten%s"%self.name#black是一个全局变量black=Cat("小黑")print(black)执行结果:上面没有一些默认的对象信息,而是一些我们要输出的定义内容。您可以单击链接查看面向对象Python的免费教程。有文章和视频。
