为什么Python线程模块中的类会公开工厂函数而不是构造函数?

sat*_*oru 10 python

threading模块中,RLock,SemaphoreEvent等名称都是工厂函数,而实现类的名称以下划线为前缀.

工厂函数只是将它们收到的所有参数传递给底层构造函数.

那么这样做的好处是什么?

Mar*_*ers 2

没有什么真正的优势。

Guido于 1998 年添加了该模块;第一个修订版已经包含了这些工厂功能。也许他对这些工厂函数有计划,也许他正在研究 Java 实现并复制了一些惯用语,也许他想通过在他的脑海中重新实现 C 来使事情可插入。

我们只能猜测,或者直接问Guido。