python魔法函数

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简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,136评论 0 10
  • 包(lib)、模块(module) 在Python中,存在包和模块两个常见概念。 模块:编写Python代码的py...
    清清子衿木子水心阅读 9,201评论 0 27
  • 小王子的海绵宝宝阅读 1,391评论 0 0
  • 外甥女五岁了,是个爱臭美又要强的可爱小女孩。 一日,爸妈带姐弟俩去楼下小区广场玩。广场上有许多小朋友,弟弟很快和一...
    吴二_736d阅读 1,462评论 0 2
  • 给瑶瑶的一封信 亲爱的瑶瑶,你好,妈妈,好久没有给你写信了,今天是我给你写得第几封信呢,我都有点儿说不清了,...
    豆言瑶语阅读 1,241评论 0 0