前言:
当前我们对“python中类的内置方法”大概比较珍视,咱们都想要知道一些“python中类的内置方法”的相关资讯。那么小编同时在网摘上网罗了一些有关“python中类的内置方法””的相关知识,希望朋友们能喜欢,各位老铁们快快来了解一下吧!一、内置方法:
方法名
类型
作用
__del__
方法
对象被从内存中销毁前,会被自动调用
__str__
方法
返回对象的描述信息,print函数输出使用
1.1 __del__方法
在python中,当使用类名()创建对象时,为对象分配完空间后,自动调用__init__方法,当一个对象被从内存中销毁前,会自动调用__del__方法。(__del__英文状态下的del左右一边各两个下划线)
应用场景:
__init__ : 改造初始化方法,可以让创建对象更加灵活。
__del__ :如果希望在对象被销毁前再做一些事情,可以考虑一下__del__方法。
生命周期:
一个对象从调用类名()创建,生命周期开始。
一个对象的__del__方法一旦被调用,生命周期结束。
在对象的生命周期内,可以访问对象属性或者让对象调用方法。
1.1.1 __del__代码演练
首先先来一段没有__del__方法的代码
class Cat: def __init__(self, new_name): self.name = new_name print("%s来了" % self.name)black = Cat("小黑")print(black.name)
执行结果:
再来一段有__del__方法的代码
class Cat: def __init__(self, new_name): self.name = new_name print("%s来了" % self.name) def __del__(self): print("%s走了" % self.name)black = Cat("小黑")print(black.name)
执行结果:
执行结果有小黑走了,但是我们并没有调用__del__方法,因为这个方法是在对象被从内存中销毁之前由系统自动调用的。
再次改造以上代码,增加一个分隔线:
class Cat: def __init__(self, new_name): self.name = new_name print("%s来了" % self.name) def __del__(self): print("%s走了" % self.name)black = Cat("小黑")print(black.name)print("-" * 30)
问题:此时可以猜一猜,小黑走了是在分隔线上面输出还是下面输出?
答案:在分隔线下方输出。
原因:因为black这个变量在当前模块中是全局变量,所以当所有的代码完成执行之后,系统会把black这个变量进行回收,在回收之前就自动执行了__del__方法。
执行结果:
使用del方法删除black对象代码:
class Cat: def __init__(self, new_name): self.name = new_name print("%s来了" % self.name) def __del__(self): print("%s走了" % self.name)black = Cat("小黑")print(black.name)del blackprint("-" * 30)
执行结果:小黑走了在下划线下方输出
原因:因为del关键字可以删除一个对象,当使用del关键字把black对象删除之后,系统会自动帮我们调用__del__方法,把这个方法执行完成之后才会执行后面的那句打印分隔线代码。
以上整体代码截图:
2.1 __str__方法
在python中,使用print输出对象变量,默认情况下,会输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址(十六进制表示)
如果在开发中,希望使用print输出对象变量时,能够打印自定义的内容,就可以利用__str__这个内置方法了。(也就是不希望输出默认情况下的类和内存地址内容,而是我们自己希望输出的内容,这个时候用__str__内置方法)
注意:__str__这个方法必须返回一个字符串。
2.1.1代码演练:
1.在默认情况下使用print看到的代码效果:
输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址。
2.使用__str__内置方法
class Cat: def __init__(self, new_name): self.name = new_name print("%s来了" % self.name) def __del__(self): print("%s走了" % self.name) def __str__(self): # 必须返回一个字符串 return "我是小猫 %s" % self.name# black 是一个全局变量black = Cat("小黑")print(black)
执行结果:
并没有以上默认的一些对象信息,而是我们自己想要输出的定义的一些内容
关于Python面向对象方面的更多信息可以去Python自学网看看,有文章也有视频:
标签: #python中类的内置方法