我想在類物件中創建一個方法(取決于某些條件)。這在我在類 (m2) 中創建 lambda 并將現有方法分配給類屬性 (m3) 時有效,但在我將 lambda 分配給類屬性 (m1) 時無效。在這種情況下,lambda 不會獲得 self 引數。
class c:
def __init__( self ):
self.m1 = lambda self: 1
self.m3 = self._m3
m2 = lambda self: 1
def _m3( self ):
pass
c().m2() # works
c().m3() # works
c().m1() # error: missing 1 required positional argument: 'self'
我必須做什么才能使用 c().m1() 語法呼叫 m1 lambda?
uj5u.com熱心網友回復:
函式需要系結到實體才能成為實體的系結方法,并在呼叫時將實體作為第一個引數傳遞。
您可以使用以下方法將未系結的函式系結到實體types.MethodType:
from types import MethodType
class c:
def __init__(self):
self.m1 = MethodType(lambda self: 1, self)
uj5u.com熱心網友回復:
代替
self.m1 = lambda self: 1
經過
self.m1 = lambda: 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/530951.html
上一篇:Pytesseract結果包含意外內容“\n\x0c”
下一篇:根據公共鍵合并字典串列
