在threading
模塊中,像RLock,Semaphore和Event這樣的名稱都是工廠函數,而實現類的名稱前面加下劃線。爲什麼Python線程模塊中的類會暴露工廠函數而不是構造函數?
工廠函數只是將它們收到的所有參數傳遞給底層構造函數。
那麼這樣做的好處是什麼?
在threading
模塊中,像RLock,Semaphore和Event這樣的名稱都是工廠函數,而實現類的名稱前面加下劃線。爲什麼Python線程模塊中的類會暴露工廠函數而不是構造函數?
工廠函數只是將它們收到的所有參數傳遞給底層構造函數。
那麼這樣做的好處是什麼?
有沒有真正的優勢。
Guido added the module 1998;第一個版本已經包含了這些工廠功能。也許他對這些工廠的功能規劃,也許他在看的Java實現,並複製了一些成語,也許他想的事情可插拔在他的後腦勺一個C重新實施。
我們只能猜測,或直接詢問Guido。
線程-SIG檔案似乎已經從因特網(*)消失了,但我敢肯定它阻止你沒有被設計爲子類子類的東西(你真的不想要打破同步基本意外),並且該模塊已經足夠老了,以至於在添加新模式時,您無法使用新風格的欺騙手段。
還要注意,例如RLock
有多個實現類。
*)好的,我在希臘的FTP服務器上發現了一些殘留物,但沒有原始規格。
我的猜測是傳統的;該模塊非常古老。 –
@MartijnPieters是這樣嗎?我仍然在我的機器上使用Python2.7。 – satoru
1998年,線程被添加到庫中;我認爲Python 1.5.1是第一個包含它的人。 –