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
    
    
  • 相关阅读:
    隐藏NGINX服务器名称 和版本号
    salt-grains
    格式化输出文本的方法
    递归例子
    yield 生成器例子
    Python基础之函数
    Python基础之面向对象
    Python基础之模块2
    Python基础之字符编码
    Python基础之文件操作
  • 原文地址:https://www.cnblogs.com/greatkyle/p/6758424.html
Copyright © 2011-2022 走看看