【python小白】 問關(guān)于property的順序問題
問題描述
代碼如下:
class Test(object): def __init__(self):self.__num = 100 def setNum(self,newNum):print('----setter-----')self.__num = newNumdef getNum(self):print('----getter-----')return self.__numnum = property(getNum,setNum) #get在前,set在后 #num = property(setNum,getNum) #set在前,get在后 t = Test()print(t.getNum())t.setNum(2000)print(t.getNum())print('----'*10)t.num = 5000print(t.num)
運(yùn)行結(jié)果:
在代碼中,property的那一部分,get在前面,set在后面,執(zhí)行結(jié)果正常。然后如果把set放在前面,get放在后面,程序就出錯(cuò)了。
我想問下,這個(gè)為什么跟位置還有關(guān)系呢?不是程序自動(dòng)識(shí)別的么?為什么換了位置就錯(cuò)誤了?
問題解答
回答1:我試了一下,錯(cuò)誤信息是:TypeError: getNum() takes 1 positional argument but 2 were given
getter接收一個(gè)參數(shù),setter接收兩個(gè)參數(shù),互換了傳入的參數(shù)個(gè)數(shù)就不匹配了。
這個(gè)定義里是有順序的:class property(fget=None, fset=None, fdel=None, doc=None)
相關(guān)文章:
1. 前端 - html5 audio不能播放2. java固定鍵值轉(zhuǎn)換,使用枚舉實(shí)現(xiàn)字典?3. vim - win10無(wú)法打開markdown編輯器4. mysql - 千萬(wàn)數(shù)據(jù) 分頁(yè),當(dāng)偏移量 原來(lái)越大時(shí),怎么優(yōu)化速度5. 如何解決tp6在zend中無(wú)代碼提示6. javascript - 有沒有類似高鐵管家的時(shí)間選擇插件7. 這是什么情況???8. python - flask學(xué)習(xí),user_syy添加報(bào)role is invalid keyword for User.9. css - BEM 中塊(Block)有木有什么標(biāo)準(zhǔn) 何時(shí)決定一個(gè)部分提取為塊而不是其父級(jí)的元素呢(Element)?~10. javascript - 微信網(wǎng)頁(yè)開發(fā)從菜單進(jìn)入頁(yè)面后,按返回鍵沒有關(guān)閉瀏覽器而是刷新當(dāng)前頁(yè)面,求解決?
