类里面装饰器的使用,args[0]=self

针对函数和类单独写装饰器可以理解了,请参考往期文档。
之前写了一个类,然后想把装饰器实现的函数也写在类里面,在类方法加上装饰器,之前一直报错。
现在解决了,就是类里面的参数第一个self,所以一定要注意self参数。

实现例子如下:

class action:
    def __init__(self,name,gender,address=None):
        self.name=name
        self.gender=gender
        self.address=address
        print("你好啊!!")
    #装饰器
    def warpper( func ):
        def warpper_0(*args,**kwargs):
            print("开始,名字")
            instance=args[0]
            print(instance.name)
            print("居住地:")
            print(instance.address)
            func(*args,**kwargs)
            print("卡")
        return warpper_0
    @warpper
    def function( self,name="魏无羡",gender="男",address="夷陵"):
        if self.name=="温宁":
            print("鬼将军温宁是魏无羡的小跟班")
            if self.address==None:
                print("住在这里吧:"+address)
            else:
                print("有住的地方啊!"+self.address+" 是个好地方!")
            print("我是"+name+",我住"+address)
        elif self.name=="江澄":
            print("江澄是个二愣子,哈哈哈!")
            if self.address==None:
                print("莲花坞不能住了吗?")
            else:
                print("现在住在这里了啊"+self.address)
                print ( "我是" + name  )
        else:
            print(self.gender)
            if self.gender=="女":
                print("你貌似走错片场了")
            else:
                print("搞事业搞事业,没空谈恋爱")
            print ( "我住" + address )
            print("给你演奏一曲乱魄抄,夺舍咋样")
            print("哈哈哈哈,乱七八糟,请忽略")

        #装饰器

ac=action("江澄",gender="男",address="无家可归")
print("+++++++++++++++++++++++++++++++++++++++++++++")
ac.function()
print("==============================================")
ac1=action("江厌离",gender="女",address="无家可归")
print("================================================")
ac1.function("蓝湛",address="云深不知处")

运行结果如下:

C:\Users\18566\AppData\Local\Programs\Python\Python38\python.exe C:/Users/18566/Desktop/APPAutoTest/zhuangshiqi.py
你好啊!!
+++++++++++++++++++++++++++++++++++++++++++++
开始,名字
江澄
居住地:
无家可归
江澄是个二愣子,哈哈哈!
现在住在这里了啊无家可归
我是魏无羡
卡
==============================================
你好啊!!
================================================
开始,名字
江厌离
居住地:
无家可归
女
你貌似走错片场了
我住云深不知处
给你演奏一曲乱魄抄,夺舍咋样
哈哈哈哈,乱七八糟,请忽略
卡

Process finished with exit code 0

关键点就是要把args[0]赋给一个值,这个args[0]代表self。

请忽略以上神经病剧情,透过现象看本质。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值