Python 之 拦截器(拦截属性或者方法)

知识点:

 1.什么时拦截器:当对象访问属性或者方法时 首先调用 __getattribute__

 2.拦截器的应用:如果有哪个用户调用了该属性或者方法 可以存入log 日志中

 3.拦截器拦截属性

4.拦截器拦截方法

5.禁止在__getattribute__方法中出现self.xxx

拦截器拦截属性

class Ircast(object):
    def __init__(self,subject1):
        self.subject1 = subject1
        self.subject2 = "cpp"
    #属性访问时拦截器,打印log
    #禁止再使用self.xxx
    def __getattribute__(self,obj):
        #obj为对象的属性名
        print("%s"%obj)
        if obj == "subject1":
            print("log subject1")
            return "redrect python"
        else:
            #返回原有属性的value
            temp = object.__getattribute__(self,obj)
            print("%s"%str(temp))
            return temp
    def show(self):
        print("haha")
t = Ircast('subject')
print(t.subject2)

拦截器拦截方法

class Ircast(object):
    def __init__(self,subject1):
        self.subject1 = subject1
        self.subject2 = "cpp"
    #属性访问时拦截器,打印log
    #禁止再使用self.xxx
    def __getattribute__(self,obj):
        #obj为对象的属性名
        print("%s"%obj)
        if obj == "subject1":
            print("log subject1")
            return "redrect python"
        else:
            #返回原有属性的value
            temp = object.__getattribute__(self,obj)
            print("%s"%str(temp))
            return temp
    def show(self):
        print("haha")
t = Ircast('subject')
t.show()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值