【python小白】 問關于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)
運行結果:
在代碼中,property的那一部分,get在前面,set在后面,執行結果正常。然后如果把set放在前面,get放在后面,程序就出錯了。
我想問下,這個為什么跟位置還有關系呢?不是程序自動識別的么?為什么換了位置就錯誤了?
問題解答
回答1:我試了一下,錯誤信息是:TypeError: getNum() takes 1 positional argument but 2 were given
getter接收一個參數,setter接收兩個參數,互換了傳入的參數個數就不匹配了。
這個定義里是有順序的:class property(fget=None, fset=None, fdel=None, doc=None)
相關文章:
1. Android下,rxJava+retrofit 并發上傳文件和串行上傳文件的效率為什么差不多?2. javascript - 學習網頁開發,關于head區域一段腳本的疑惑3. javascript - 如何獲取未來元素的父元素在頁面中所有相同元素中是第幾個?4. mysql - AttributeError: ’module’ object has no attribute ’MatchType’5. Whitelabel錯誤頁面發生意外錯誤(類型=未找到,狀態= 404)/WEB-INF/views/home.jsp6. 熱切期待朱老師的回復,網頁視頻在線播放器插件配置錯誤7. javascript - JS設置Video視頻對象的currentTime時出現了問題,IE,Edge,火狐,都可以設置,反而chrom卻...8. macos - mac下docker如何設置代理9. angular.js - ng-grid 和tabset一起用時,grid width默認特別小10. javascript - 從mysql獲取json數據,前端怎么處理轉換解析json類型
