Python生产代码中令人抓狂的__init__方法
2025-04-19
一个Python服务测试偶尔会失败,原因出在一个疯狂的__init__方法上。FooBarWidget类在其__init__方法中,启动一个新线程来执行父类FooWidget的__init__方法和run方法。由于zmq.Socket对象不能跨线程移动,这种设计试图避免阻塞主线程。然而,如果过早关闭FooBarWidget实例,FooWidget的__init__可能未完成,导致'should_exit'属性缺失,引发错误。这篇文章以幽默的笔触讲述了这段令人头疼的调试经历,并探讨了这种反常设计的动机。
开发
__init__