在threading
模块中,RLock,Semaphore和Event等名称都是工厂函数,而实现类的名称则以下划线为前缀。
工厂函数只是将它们收到的所有参数传递给底层构造函数。
那么这样做有什么好处?
答案 0 :(得分:4)
线程sig档案似乎已经从Internet上消失了(*),但是我很确定它会阻止你对未设计为子类的东西进行子类化(你真的不想破坏同步原语偶然的),模块已经足够大,以至于在添加它时你不能用新式的类技巧来做。
另请注意,例如RLock
有多个实现类。
*)好吧,我在希腊的FTP服务器上发现了一些残余物,但是没有原始规格。
答案 1 :(得分:2)
没有真正的优势。
Guido added the module 1998;第一个修订版已包含那些工厂功能。也许他有这些工厂功能的计划,也许他正在研究Java的实现并复制了一些习惯用语,也许他想在后面用C重新实现可以插件。
我们只能猜测,或直接询问Guido。