我正在寫一些代碼,在Python 3工作,但不是Python的2防止成爲了一個Python instancemethod 2
foo = lambda x: x + "stuff"
class MyClass(ParentClass):
bar = foo
def mymethod(self):
return self.bar(self._private_stuff)
我希望它簡單地打印私密的東西,但如果我的函數嘗試的MyMethod運行,我得到:
TypeError: unbound method <lambda>() must be called with MyClass instance as first argument (got str instance instead)
當然,以上是不實際的代碼,但真實的東西簡單化。我想這樣做,因爲我需要傳遞我不想公開最終用戶的私人信息,即任何擴展我的課程的人。但在Python 2中,全局級lambda(或任何普通函數)變成instancemethod
,在這種情況下這是不需要的!
你推薦我做這段代碼是否便攜?
必須說:如果有人可以擴展你的課程,你不能保持信息的私密性。 –
我不希望其他人需要知道如何做self._private的東西。他們可以,如果他們想。但這就是我寫這個的原因,所以他們不需要。 – jleeothon
我不明白它如何在Py3中工作。這裏的情況幾乎是一樣的,除了我得到一個不同的消息:'TypeError:()需要1個位置參數,但2給出了' - 而Py2給我幾乎相同的消息'TypeError:()只需要1個參數(2給出)'。 –
glglgl