您的位置:首頁技術文章
文章詳情頁

【python小白】 問關于property的順序問題

瀏覽:82日期:2022-06-26 16:23:03

問題描述

代碼如下:

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)

運行結果:

【python小白】  問關于property的順序問題

在代碼中,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)

標簽: Python 編程
相關文章:
国产综合久久一区二区三区