关于python:Python对象的内置方法del和str的介绍和使用

34次阅读

共计 1841 个字符,预计需要花费 5 分钟才能阅读完成。

一、内置办法:

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 black

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

正文完
 0