python-类装饰器/反射

本文深入探讨了Python装饰器的工作原理及使用方法,并详细解释了反射机制的概念及其在Python中的应用,包括如何通过字符串访问对象属性和方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Class Demo:

        def  __init__(self,func):

                self._func=func

        #实例()自动执行下面这个方法

        def __call__(self,*args,**kwargs)

               print("执行call方法")

                self._func()

                print(f"执行{self._func.__name__}扩展功能")

@Demo

def test():

        print("执行test函数")

test()

当被装饰的函数存在多个装饰器,执行规则:最先执行里面的,最后执行外面的,就近原则

def a(func)

        def wrapper()

                print('a')

        return func

def b(func)

        wrapper()

                print('b')

        return func

@a

@b

def test1()

        print('执行test1')

test1()

----反射--------

一,什么是反射:把字符串映射到实例的变量和实例的方法,然后可以取进行执行调用和修改

二,反射四个重要的方法

1.getattr 获取对象属性,对象方法

2.hasattr 判断是否有对应的属性方法

3.delattr 删除指定的属性

4.setattr 为对象设置内容

class TestObj:

        def __init__(self,name,age):

                self.name=name

                self.age=age

        deg test(self):

                print("执行test方法")

def a:

        print("a方法")

if __name__=='__main__':

        xiaoyu=TestObj('小于',18)

        print(getattr,"name")

        result=getattr(xiaoyu,"test")

        result()

        if hasattr(xiaoyu,"test"):

                print(getattr(xiaoyu,"test")))

        setattr(xiaoyu,"name","winnie")

        setattr(xiaoyu,"test1",a)

        getattt(xiaoyu,test1)()

        xiaoyu.test1()

class test:

        funlist=['login',register']

        def login(self:)

                print("登录")

        def register(self):

                print("注册")

        def run(self,num):

                getattr(self,self.funlist[num-1])()

if __name__=__'main__'

        obj=test()

        num=int(input("请输入数字:"))

        obj.run(num)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值