zoukankan      html  css  js  c++  java
  • 内置的Attr系列

    Attr包含三个函数

    getattr, setattr, delattr

    setattr:添加/修改属性会触发它的执行
    delattr:删除属性的时候会触发
    getattr:只有在使用点属性且属性不存在的时候才会触发

    class Student:
        def __init__(self,name,age,classroom):
            self.name =name
            self.age=age
            self.classroom =classroom
    
        def __getattr__(self, item):
            print("我没找到这个属性%s"%item)
    
        def __setattr__(self, key, value):
            print("我需要为变量%s设置这个值%s,但是利用的是__dict__字典"%(key,value))
            self.__dict__[key]=value
    
        def __delattr__(self, item):
            print("我需要删除这个属性拉%s,利用的也是self__dict__字典"%item)
            self.__dict__.pop(item,"找到这个属性,没法删除拉")
    
    
    
    s1 = Student("Grace",20,102) #实例化对象,
    
    print(s1.age) #调用age属性
    print(s1.ge) #调用ge属性
    
    s1.num = 87 #新增一个num属性冰赋值为87
    print(s1.num) #调用s1.num,查看结果
    
    del s1.num #删除s1的num属性
    
    print(s1.num) #查看调用s1的num属性
    
    

    执行结果

    我需要为变量name设置这个值Grace,但是利用的是__dict__字典
    我需要为变量age设置这个值20,但是利用的是__dict__字典
    我需要为变量classroom设置这个值102,但是利用的是__dict__字典
    20
    我没找到这个属性ge
    None
    我需要为变量num设置这个值87,但是利用的是__dict__字典
    87
    我需要删除这个属性拉num,利用的也是self__dict__字典
    我没找到这个属性num
    None
    
    
  • 相关阅读:
    Go语言标准库flag基本使用
    GO学习-(12) Go语言基础之函数
    GO学习-(11) Go语言基础之map
    GO学习-(10) Go语言基础之指针
    Spring AOP
    JDK动态代理
    版本控制
    版本控制
    浅析Java反射机制
    Spring Batch学习
  • 原文地址:https://www.cnblogs.com/greatkyle/p/6758424.html
Copyright © 2011-2022 走看看