• 【2020Python修炼记】Python语法入门—内置方法 __str__和__del__


    python的class机制内置了很多特殊的方法来帮助使用者高度定制自己的类,

    这些内置方法都是以双下划线开头和结尾的,会在满足某种条件时自动触发。

    我们以常用的__str__和__del__为例来简单介绍它们的使用。

    1、__str__方法

    __str__方法会在对象被打印时自动触发,print功能打印的就是它的返回值,

    我们通常基于方法来定制对象的打印信息,该方法必须返回字符串类型

    class People:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def __str__(self):
            # print('运行了...')
            return "<%s:%s>" %(self.name,self.age)
    
    
    obj = People('辣白菜同学', 18)
    
    # print(obj.__str__())
    print(obj)  # <'辣白菜同学':18>
    
    obj1=int(10)
    print(obj1)
    
    # 输出结果
    # <辣白菜同学:18>
    # 10

    2、__del__方法

    __del__会在对象被删除时自动触发。

    由于python自带的垃圾回收机制会自动清理python程序的资源,所以当一个对象只占用应用程序级资源时,完全没必要为对象定制__del__方法,但在产生一个对象的同时涉及到申请系统资源(比如系统打开的文件、网络连接等)的情况下,关于系统资源的回收,python的垃圾回收机制便派不上用场了,需要我们为对象定制该方法,用来在对象被删除时自动触发回收系统资源的操作

    class People:
        def __init__(self, name, age):
            self.name = name
            self.age = age
            self.x = open('a.txt',mode='w')
            # self.x = 占据的是操作系统资源
    
        def __del__(self):
            print('run...')
            # 发起系统调用,告诉操作系统回收相关的系统资源
            self.x.close()
    
    obj = People('辣白菜同学', 18)
    # del obj # obj.__del__()
    print('============>')

    # 输出结果:

    ============>
    run...

    class People:
        def __init__(self, name, age):
            self.name = name
            self.age = age
            self.x = open('a.txt',mode='w')
            # self.x = 占据的是操作系统资源
    
        def __del__(self):
            print('run...')
            # 发起系统调用,告诉操作系统回收相关的系统资源
            self.x.close()
    
    obj = People('辣白菜同学', 18)
    del obj # obj.__del__()
    print('============>')
    
    # 输出结果
    # run...
    # ============>
    探索版二--View Code
  • 相关阅读:
    我的友情链接
    我的友情链接
    BuChain 介绍:视屏讲解
    2019年5月数据库流行度排行:老骥伏枥与青壮图强
    五一4天就背这些Python面试题了,Python面试题No12
    钱包:BUMO 小布口袋 APP 用户手册
    工具箱:BUMO 工具应用场景示例
    工具箱:BUMO 密钥对生成器用户手册
    开发指南:BUMO 智能合约 Java 开发指南
    钱包:BOMO 轻钱包用户手册
  • 原文地址:https://www.cnblogs.com/bigorangecc/p/12707190.html
Copyright © 2020-2023  润新知