我正在學習燒瓶,現在我正在閱讀燒瓶代碼。
我進入了一個我無法完全理解的塊。python 3中的lambda如何處理參數引用?
def implements_to_string(cls):
cls.__unicode__ = cls.__str__
cls.__str__ = lambda x: x.__unicode__().encode('utf-8')
return cls
@implements_to_string
class Test(object):
def __init__ (self):
pass
test = Test()
print(test.__str__)
print(test.__str__())
第一打印顯示拉姆達方法爲:
<bound method Test.<lambda> of <__main__.Test object at 0x7f98d70d1210>>
第二種:
<__main__.Test object at 0x7fcc4394d210>
所以,當確實在FUNC implements_to_string
拉姆達的x
成爲cls
對象?
它只是一個我現在只需要記住的內在機制?
或者還有其他需要知道的東西嗎?
調用lambda函數時的'x'參數不是'Test'類,而是實例'test'。 Python以實例('self')作爲第一個參數調用instancemethods。 – resi
@resi非常感謝。我現在認爲,在類環境下的lambda函數會將第一個參數作爲'self' – John