Python鏈式賦值執行順序及執行方式的證明

2021-10-05 16:46:38 字數 1353 閱讀 5043

老猿進行了驗證,發現確實如期所說。具體證明方法如下:

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...