一個類中,假如一個私有屬性,有兩個方法,一個是getNum , 一個是setNum 它,那麼可以用 Property 來使這兩個方法結合一下,比如這樣用 num = property(getNum, setNum) 那麼 如果創建一個對象 t = Test() , t.num 這樣就相當於調用了 g ...
一個類中,假如一個私有屬性,有兩個方法,一個是getNum , 一個是setNum 它,那麼可以用 Property 來使這兩個方法結合一下,比如這樣用 num = property(getNum, setNum)
那麼 如果創建一個對象 t = Test() , t.num 這樣就相當於調用了 getNum 方法, t.num = 100 這樣就相當於調用了 setNum 方法 ,例如:
class Test(object): def __init__(self): self.__num = 0 def getNum(self): print('----get----') return self.__num def setNum(self, newNum): print('----set----') self.__num = newNum num = property(getNum, setNum) t = Test() t.num = 100 print(t.num) >>>----set---- ----get---- 100
當然,一般在使用property的時候,都會用裝飾器的方法使用它,因為這樣看起來更加簡單:
class Test(object): def __init__(self): self.__num = 0 @property def num(self): print('----get----') return self.__num @num.setter # 兩個方法名要相同,用 方法名.setter 聲明設置它的方法. def num(self, newNum): print('----set----') self.__num = newNum t = Test() t.num = 100 print(t.num) >>>----set---- ----get---- 100
這樣上面兩個方法就可以用相同的名字,而編譯器會在 t.num 這種取值操作的時候調用 用 @property 裝飾的方法 , 在 t.num=100 這種賦值操作的時候調用 用 @num.setter 裝飾的方法.
這樣的作用就相當於把方法進行了封裝,以後使用起來會更加方便.