類裏面裝飾器的使用,args[0]=self

2020-08-08 20:39:44

針對函數和類單獨寫裝飾器可以理解了,請參考往期文件。
之前寫了一個類,然後想把裝飾器實現的函數也寫在類裏面,在類方法加上裝飾器,之前一直報錯。
現在解決了,就是類裏面的參數第一個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。

請忽略以上神經病劇情,透過現象看本質。