日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python使用@property方法改变方法为参数

發布時間:2025/4/16 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python使用@property方法改变方法为参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

回歸基礎,學習了一波 使用@property 加上了很多自己慢慢的摸索

class Test(object):def __init__(self):self.__A = 1def changeA(self, value):self.__A = valuedef getA(self):return self.__A@propertydef A(self):return self.__A@A.setterdef A(self, value):self.__A = value@A.getterdef A(self):return self.__A

上面構造出來的類,實現了將一個類變成元素的方法。這句話很抽象,但是當你看了下面的使用的時候,你就會發現了,其實很簡單

t = Test() t.changeA(2) t.A = 3

在上面的測試代碼中,我是實例化了一個Test類。然后第一步是用了一個public的函數changeA()。使用這個函數,當然很容易就知道了會改變了實例化對象的__A元素。

但是由于上面用了@property 所以可以直接用。也就是說,在t.A = 3這句話結束的時候就知道了,t.__A其實被改成了3了。

為了驗證,我們做下面的輸出

print(t.A) print(t.getA())

輸出的結果是:

3
3

其實這里A也可以直接指向了這個類的私有變量__A了。同時對這個變量進行了修改。

可能有些搞笑。但是,我們這里實現了將一個__A這個私有變量變成了一個公有的變量A。

這里的核心就再之前的那里用了,@property 會將對應的函數變成變量。這看起來有點好玩。不過,我們還可以進一步的試一下~

  • 我們將之前的類保持不變,但是我們改變那個測試函數。
    變成下面的這樣子~
  • t = Test() print(t.A) print(t.getA())

    輸出是

    1
    1

    看到了沒有,同樣都是函數(A 和 getA),但是為了輸出self.__A,前者直接就像元素一般直接溜了,但是后者,卻還要用去調用。

    如果直接用 t.A()

    TypeError: ‘int’ object is not callable

    就會有這樣的錯誤。我寫過一篇關于tuple的文章,里面也是解決了這個問題的。點這可以看這個文章
    2. 再改改這個測試函數, 但是我們把那個 類的后面的兩個函數(就是后面兩個有裝飾器的) 先注釋掉

    t = Test() t.A = 2

    就會報下面的錯誤了

    AttributeError: can’t set attribute

    這個是可以理解的,因為,這里t.A其實 返回的是self.__A的實體,但是這個實體確實是沒有辦法改~ 所以也就沒能set。

    但是有趣的是,可能是我python解釋器的原因,我是可以直接使用下面這樣的語句的。哈哈哈,簡直有毒,反而封裝之后的元素是變成了真正的私有變量。

    t.__A = 2 print(t.__A)
  • 看到上面的這一個,其實就大概可以猜測出來我要干嘛了~
    我把類改寫成這個樣子~
  • class Test(object):def __init__(self):self.__A = 1@propertydef _A(self):return self.__A

    然后,我的測試函數是:

    t = Test() print(t._A)

    這樣,我就實現了一個只能看不能改的私有變量。而且在我的IDE(Pycharm中使用是看不到原來那個__A,但是可以看到這個。這樣看來,這個類就是實現了一個可以被看到的私有變量了~ 真刺激~)

    總結

    以上是生活随笔為你收集整理的Python使用@property方法改变方法为参数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。