• 2019年8月11日 类的内置attr 函数


    类本质也是个对象

    class BlackMedium:
        feture='ugly'
        def __init__(self,name1,addr):
            self.name=name1
            self.addr=addr
    
        def sell_hourse(self):
            print('%s正在卖房'%self.name)
    
        def rent_hourse(self):
            print('%s租房子'%self.name)
    
    print(hasattr(BlackMedium,'sell_hourse'))#类本质也是对象,所以也能用attr方法

    》》》

    True

    len(str)-->str.__len__()


    class Foo:
        x=1
        def __init__(self,y):
            self.y=y
    
        def __getattr__(self, item):#调用一个不存在的属性时会触发
            print('调用一个不存在的属性时会触发,执行__getattr__')
    
        def __delattr__(self, item):
            print('删除一个属性时(无论类中是否存在)会触发,执行__delattr__')
           # self.__dict__.pop(item) #底层设置
    
        def __setattr__(self, key, value):
            print('设置属性时候会触发执行__setattr__')
            # self.key=value#设置属性,如果这么设置会进入无限递归,因为init中有设置
            self.__dict__[key]=value#本质是在操作字典,底层字典进行设置,这样不会进入递归
    
    f1=Foo(10)
    print(f1.y)
    
    print(getattr(f1,'y')) #eg:
    
    f1.sss
    del f1.w
    f1.z=2
    print(f1.__dict__)
    print(dir(Foo))
    #dir方法反馈的内置功能最全,从中得知上述3个下划线方法都内置有,
    #只不过通过重新def定义改变了原本定义的功能,由此可知对内置函数进行操作,必须对底层进行操作才不会报错





  • 相关阅读:
    json&pickle模块
    Linux BASH 常用命令
    Vmware安装Kali2020
    CentOS7部署Prometheus
    CentOS7部署FreeRadius3.0及WEB管理界面DaloRadius
    Cisco VRRP、TRACK、SLA配置
    Cisco L2TP OVER IPSEC
    Cisco PPTP Server Configration
    华为S5700交换机初始化和配置TELNET远程登录
    华为S5720常用命令
  • 原文地址:https://www.cnblogs.com/python1988/p/11336543.html
Copyright © 2020-2023  润新知