• 类的内置方法


    isinistance(obj, cls)

    检查obj是否是类cls的对象

    class Foo(object):
        pass
    
    obj = Foo()
    
    print(isinstance(obj, Foo))
    

    issubclass(sub,super)

    检查sub类是否是super类的派生类

    class Foo(object):
        pass
    
    class Bar(Foo):
        pass
    
    print(issubclass(Bar, Foo))

    __setitem__,__getitem__,__delitem__

    把对象模拟成像字典对象操作一样的类型

    __getitem__ 查看属性

    class Foo:
        def __init__(self, name):
            self.name = name
    
        def __getitem__(self, item):   # item = "name"  通过字符串访问属性
            # print("getitem...")
            # print(item)
            return self.__dict__.get(item)
    
    obj = Foo("alex")
    # print(obj.__dict__)
    
    # obj.属性
    obj["name"] #按照这种形式取值

    __setitem__ 设置属性

    class Foo:
        def __init__(self, name):
            self.name = name
    
        def __setitem__(self, key, value):  # 设置值
            # print("setitem...")
            # print(key, value)
            self.__dict__[key]=value
    obj = Foo("alex")
    # print(obj.__dict__)
    
    # obj.sex = "male"   # 以前设值(赋值)
    obj["sex"] = "male"
    print(obj.__dict__)
    print(obj.sex)

    __delitem__ 删除属性

    class Foo:
        def __init__(self, name):
            self.name = name
    
        def __delitem__(self, key):   # 删除属性
            # print("delitem..")
            # print(key)
    
            # self.__dict__.pop(key)
            del self.__dict__[key]
    
    
    obj = Foo("alex")
    # print(obj.__dict__)
    
    
    print(obj.__dict__)
    # del obj.name
    del obj["name"]
    print(obj.__dict__) 

    __str__,__repr,__format__

    d = {"name": "egon"}  # 本质上是dict类的实例
    # d = dict({"name": "egon"})
    # print(isinstance(d, dict))
    print(d) #{'name': 'egon'}
    
    
    class Foo:
        pass
    
    obj = Foo()
    print(obj)  #<__main__.Foo object at 0x000001E4EF704B00>
    

    本质是d和obj都是类的实例,但是打印的结果不一样

    __str__方法

    在打印时触发,把返回值以字符串的形式,作为打印的内容

    # __str__方法(一定要返回字符串类型)(打印对象的时候会触发该方法的执行)
    class People:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def __str__(self):   # 在打印时触发,把返回值以字符串的形式,作为打印的内容
            # print("----->str")
            return "<name:%s,age:%s>" % (self.name, self.age)
    
    
    obj = People("alex", 20)
    print(obj)   # print(obj.__str__())
    

    __del__ 回收资源

    在对象删除的时候会自动先触发该功能

    # __del__  回收资源(绑定给对象的) 在对象删除的时候会自动先触发该功能
    # f = open("a.text")   # 在应用程序中拿到的是单纯的f,在操作系统中实际上是打开了一个文件
    # f.read()   # 应用程序对操作系统的调用
    # f.close()  # 回收操作系统资源  f 还是存在
    
    
    class Open:
        def __init__(self,filename):
            print("open file.....")
            self.filename = filename
    
        def __del__(self):
            print("回收操作系统资源:self.close()")
    
    f = Open("start.py")
    del f   # f.__del__()  手动
    print("-------main-----")  #  f.__del__() 自动 程序结束python会自动回收掉f(del f),遗留下了操作系统资源。__del__回收操作系统资源
    

      









  • 相关阅读:
    Mykings僵尸网络更新基础设施,大量使用PowerShell脚本进行“无文件”攻击挖矿
    CrowdStrike《无文件攻击白皮书》——写得非常好
    CrowdStrike 在 MITRE ATT&CK 评估的所有 20 个步骤中实现了 100% 的检测覆盖率——利用 Carbanak 和 FIN7(CARBON SPIDER)的两个case做的评估,不一定全面
    如何检测Windows中的横向渗透攻击——还是EDR能力为主啊
    威胁检测及威胁狩猎的工具、资源大合集
    phpmyadmin 导出数据表
    SpringBoot项目的 log4j漏洞解决—JeecgBoot
    Springbootactuator的常用endpoint的使用说明
    SpringBoot重点详解使用Actuator进行健康监控
    git log 常用方法
  • 原文地址:https://www.cnblogs.com/fantsaymwq/p/10017700.html
Copyright © 2020-2023  润新知