2 回答

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

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)):
添加回答
舉報(bào)