• 内置方法(item系列、__str__方法、__del__方法)


    一、item系列:把对象模拟成字典进行操作

    class Foo:
        def __init__(self,name):
            self.name = name
    
        def __getitem__(self, item):  # item = "name"  # 查看
            print("get item")
            return self.__dict__.get(item)
    
        def __setitem__(self, key, value):  # 设置
            print("set item")
            print(key,value)
            self.__dict__[key] = value
    
        def __delitem__(self, key):  # 删除
            print("del item")
            print(key)
            del self.__dict__[key]
    
    obj = Foo("egon")
    print(obj.__dict__)
    
    #查看属性:
    # 原本查看属性格式是obj.属性  获取属性的方式
    print(obj["name"]) # 查看name的属性,即字典的key和value的查看,如果"name"不存在,则返回None
    
    #设置属性
    #原来设置属性格式是obj.sex = "male"
    obj["sex"] = "male"  #等于添加新的key和value值
    print(obj.__dict__)
    print(obj.sex)
    
    #删除属性
    #原来是del obj.name
    del obj["name"]  #等于删除字典的key及其value

    二、__str__方法

    class People:
        def __init__(self,name,age):
            self.name = name
            self.age = age
    
        def __str__(self):
            return "Name:%s Age:%s" %(self.name,self.age)  # 必须有返回值,且返回值必须为字符串类型
    
    obj = People("egon",18)
    #print(obj)  # 没使用__str__方法之前,直接print(obj)得出的是内存地址
    print(obj)  # 使用__str__方法后,打印时可以直接执行该方法下面的代码,相当于 res = obj.__str__()

    三、__del__方法,

    如果在类内部定义了__del__方法(这个方法是绑定给对象的),那这个方法在对象被删除之前先被触发,然后再把对象删除

    class Open:
        def __init__(self,filename):
            print("open file ...")
            self.filename = filename
    
        def __del__(self):  # 与对象相关联的数据在这里定义回收操作
            print("回收操作系统资源:如self.close()")
    
    f = Open("settings.py")
    
    print("----main----")  #最后一行代码执行完成后,自动执行 del f  # f.__del__()
  • 相关阅读:
    关于数组的tip
    php 计算注册的天数
    PHP推送接口
    nginx 301 重定向
    tp3、tp5 输出上一次sql语句
    MySQL not null 取消条件限制
    vscode查看PHP函数来源
    关于git及项目的归档
    我的第一个JW项目——网上商城设计说明书(六)
    我的第一个JW项目——网上商城设计说明书(五)
  • 原文地址:https://www.cnblogs.com/nanjo4373977/p/12191683.html
Copyright © 2020-2023  润新知