一、内置办法:

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收费教程能够戳链接去看看,有文章也有视频。