python魔法函数

作者: 零_WYF | 来源:发表于2019-03-20 21:33 被阅读1次

    1.__init __ ;__new __ ; __del __
    __init __ 方法是Python最基本的魔术方法,通过此方法我们可以定义一个对象的初始操作,实际上它背后还有一个__new __方法。__new __是用来创建类并返回这个类的实例, 而__init __只是将传入的参数来初始化该实例。
    对象生命周期调用结束时,__del __ 方法会被调用。

    class A:
        def __init__(self, name):
            self.name = name
            print(self.name)
    
        def __del__(self):
            print('del', self.name)
    
    if __name__ == '__main__':
        a = A('王一帆')
        b = A('王二帆')
        c = A('王三帆')
    
    image.png

    下面这个例子,可以让你更加形象的看到垃圾回收机制的运作:

    import time
    class A:
        def __init__(self, name):
            self.name = name
            print(self.name)
    
        def __del__(self):
            print('del', self.name)
    
    if __name__ == '__main__':
        a = A('王一帆')
        b = a
        del a  # 由于a被b引用,因此删除a不会使对象被回收
        print('==================')
        time.sleep(3)
        del b
    
    image.png

    由此可见当对象不再被使用时,该对象就会被python的垃圾回收机制回收掉.

    2.__str __和__rep __
    _str __相当于是str()方法 而__repr __相当于repr()方法。str是针对于让人更好理解的字符串格式化,而repr是让机器更好理解的字符串格式化。
    在使用print()方法的时候,print首先调用的就是类里面的定义的__str __如下所示:

    class A:
        def __init__(self, name):
            self.name = name
    
        def __str__(self):
            return 'A的实例对象str%s' % self.name
    
        def __repr__(self):
            return 'A的实例对象repr'
    
    image.png

    相关文章

      网友评论

        本文标题:python魔法函数

        本文链接:https://www.haomeiwen.com/subject/moxxvqtx.html