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

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

如何傳遞可選函數(shù)參數(shù)

如何傳遞可選函數(shù)參數(shù)

楊__羊羊 2021-06-18 18:43:32
我目前正在學(xué)習(xí) python 并嘗試實(shí)現(xiàn)國際象棋。(我已經(jīng)用多種不同的語言完成了這個(gè))class Board:    def __init__(self):        self._reset()    def _reset(self, func=Board.default_layout):        self.values = [[0 for x in range(8)] for i in range(8)]        self.currentPlayer = 1        func(self.values)    @staticmethod    def default_layout(values):        passif __name__ == "__main__":    b = Board()重置方法的想法是重置電路板。上面的棋子將被移除,并調(diào)用一個(gè)函數(shù),將棋子放在初始布局中的板上。有國際象棋版本,其中有不同的起始布局。因此,我想使用默認(rèn)方法使其成為可選參數(shù):default_layout(self)但是,此代碼無法編譯,我想知道我的問題出在哪里。我收到錯(cuò)誤消息:NameError: name 'default_layout' is not defined 
查看完整描述

2 回答

?
慕尼黑8549860

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

您def _reset(self, func=Board.default_layout):正在被評(píng)估為 的定義的一部分Board,因此Board.default_layout尚未定義。


您可以創(chuàng)建default_layout一個(gè)普通函數(shù)而不是靜態(tài)方法。在使用之前需要定義它。


def default_layout(values):

    ... whatever


class Board:

    ...

    def _reset(self, func=default_layout):

        ...

或者,如果它必須是靜態(tài)方法,請不要嘗試在函數(shù)聲明中引用它。您可以在函數(shù)體中引用它,因?yàn)楹瘮?shù)體在實(shí)際調(diào)用之前不會(huì)執(zhí)行。


    def _reset(self, func=None):

        if func is None:

            func = Board.default_layout


查看完整回答
反對(duì) 回復(fù) 2021-06-22
?
汪汪一只貓

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

作為@khelwood 答案的替代方法,lambda如果您更喜歡保留類default_layout的靜態(tài)方法,也可以使用函數(shù)Board。

改變:

def _reset(self, func=Board.default_layout):

def _reset(self, func=lambda values: Board.default_layout(values)):


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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