나의 정신을 거의 붕괴시킨 미친 __init__ 메서드

2025-04-19
나의 정신을 거의 붕괴시킨 미친 __init__ 메서드

Python 서비스 테스트가 간헐적으로 실패한 원인이 된 기이한 __init__ 메서드에 대한 이야기입니다. FooBarWidget 클래스는 __init__ 메서드 내부에서 부모 클래스인 FooWidget의 __init__ 메서드와 run 메서드를 실행하기 위해 새로운 스레드를 시작합니다. 이 설계는 zmq.Socket 객체를 스레드 간에 이동할 수 없기 때문에 메인 스레드의 블로킹을 방지하려는 시도입니다. 하지만 FooBarWidget 인스턴스를 너무 빨리 닫으면 FooWidget의 __init__이 완료되지 않아 'should_exit' 속성이 누락되고 에러가 발생할 수 있습니다. 이 유머러스한 글은 디버깅 경험을 자세히 설명하고 이 파격적인 설계의 이면에 있는 논리를 탐구합니다.

개발