第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用裝飾器改變方法的返回值

使用裝飾器改變方法的返回值

縹緲止盈 2023-04-18 17:08:32
我有一個(gè)TextBox和一個(gè)Button。當(dāng)用戶點(diǎn)擊時(shí),我希望點(diǎn)擊Enter與相關(guān)的特定按鈕。并且是類。我將實(shí)例傳遞到 中,以便我們知道應(yīng)該單擊一個(gè)實(shí)例。是一個(gè)有 2 個(gè)方法和的類。TextBoxTextBoxButtonButtonTextBoxButtonclick()autoclick()我想要的是autoclick()檢查是否Enter按下了鍵,如果按下則click()返回。True我嘗試使用裝飾器并編寫了這個(gè)玩具程序來(lái)演示我的嘗試。class Button:    def click(self):        return False    def autoclick(self, func, *args):        def wrapper():            func(*args)# This function needes events as it argumnet            return True        return wrapperb = Button()class TextBox:    def __init__(self, button=None):        self.button = button    def box(self):        if enterPressed:            if self.button is not None:                self.button.autoclick(self.button.click, events)()tb = TextBox(button=b)while True:    tb.box()    if b.click():        print("this needs to be printed when user hits enter")我沒(méi)有收到任何錯(cuò)誤,但它根本不起作用。
查看完整描述

2 回答

?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

我想我現(xiàn)在可能知道你想做什么了。


試試這個(gè)。這就是我們通常使用裝飾器的方式。


class Button:

    @autoclick # this is how decorators are used.

    def click(self):

        return False


    def autoclick(self, func):

        def wrapper(*args):

            func(*args)# This function needes events as it argumnet

            return True

        if enterPressed:

            return wrapper

        else:

            return func


查看完整回答
反對(duì) 回復(fù) 2023-04-18
?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊

我認(rèn)為以下部分需要修改


class TextBox:

   def __init__(self, button=None):

       self.button = button


   def box(self):

       if enterPressed:

           if self.button is not None:

               self.button.autoclick(self.button.click, events)()

類似于:


class TextBox:

    def __init__(self, button=None):

        self.button = button


    def box(self):

        if enterPressed:

            if self.button is not None:

                self.button.click = self.button.autoclick(self.button.click)  # this line is changed

更新


我想也許你應(yīng)該是這樣的意思:


class Button:

    def _click(self):  # Maybe this method have events as parameters?

        return False


    def click(self):

        return self._click()


    def autoclick(self):

        def wrapper(*args):

            self._click(*args)  # This function needs events as it arguments

            self.click = self._click

            return True


        self.click = wrapper



class TextBox:

    def __init__(self, button=None):

        self.button = button


    def box(self):

        if enterPressed:

            if self.button is not None:

                self.button.autoclick()

或者也許是這個(gè)?:


class Button:

    def _click(self):  # Maybe this method have events as parameters?

        return False


    def click(self):

        return self._click()


    def autoclick(self):

        def wrapper(*args):

            result = self._click(*args)  # This function needs events as it arguments

            if enterPressed:

                return True

            return result


        self.click = wrapper



class TextBox:

    def __init__(self, button=None):

        self.button = button


    def box(self):

        if self.button is not None:

            self.button.autoclick()


查看完整回答
反對(duì) 回復(fù) 2023-04-18
  • 2 回答
  • 0 關(guān)注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)