老猿進行了驗證,發現確實如期所說。具體證明方法如下:
class
example
:def
__init__
(self,name)
: self.name = name
self.val =
0 self.visitcount =
0def
getvalue
(self)
: self.visitcount +=
1print
("getvalue exuted:"
,self.__repr__())
return self.val
defsetvalue
(self,val)
: self.val = val
print
("setvalue exuted:"
,self.__repr__())
def__repr__
(self)
:return f"objectname = ,val = ,visitcount="
value =
property
(getvalue, setvalue,
none
)a = example(
"a")
b = example(
"b")
c=example(
"c")
d = example(
"d")
d.value =
10a.value=b.value=c.value=d.value
執行截圖:
可以看到執行鏈式賦值語句:a.value=b.value=c.value=d.value
時,先從d物件取值出來後,再也沒有從其他物件取值,然後依次執行a、b、c的賦值。
沒想到乙個小小的鏈式賦值出了2次錯,在此再次感謝兩位熱心的博友。
上述證明方法用到了《第7.23節 python使用property函式定義屬性簡化屬性訪問的**實現》和《第7.24節 python案例詳解:使用property函式定義屬性簡化屬性訪問**實現》介紹的知識。不了解相關知識的請參考上述兩文。
關於Python鏈式賦值的賦值順序問題
在 第4.7節 python特色的序列解包 鏈式賦值 鏈式比較 一文中,老猿這樣介紹的 鏈式賦值是用一行語句將多個變數賦值為同乙個值,語法如下 變數1 變數2 變數n 賦值表示式 該語法實際執行效果類似於 變數n 賦值表示式 變數2 變數n 變數1 變數2有csdn的博友johnny592友情指出老...
Python多執行緒的執行順序及狀態
import threading import time class mythread threading.thread def run self for i in range 3 time.sleep 1 msg i m self.name str i print msg def test for...
python的執行順序 python之執行順序隨記
python的執行順序一直都是很令人頭疼,簡單隨記了一些 1 正常順序執行。print 1 a 2l 3 這個就不附結果了,都能猜得到,這種按順序執行。2 函式的執行過程 coding utf 8 defa print is a defb a print b use a defc b print c...