Note ≡ 싱글턴과 보르그
유명한 ‘사인방(Gang of Four)’ 책2은 싱글턴이라는 소프트웨어 개념을 대중화시켰습니다. 여기서 말하는 싱글턴은 C++ 또는 Smalltalk에서 단 하나의 인스턴스만 가질 수 있는 클래스를 의미합니다.
범위를 좁혀 말하면 파이썬의 None은 이 정의를 만족합니다.
>>> type(None) <class 'NoneType'> >>> None.__class__() is None True >>> (1).__class__() is 1 # ➊ <>:1: SyntaxWarning: "is" with a literal. Did you mean "=="? False
➊ 파이썬 3.10, 3.11, 3.12의 경고는 눈에 띄게 정확성이 높아졌습니다. 이 친절한 알림은 이에 대한 좋은 예입니다.
파이썬에서 클래스를 직접 작성할 때 ‘싱글턴 패턴’을 사용하는 것은 좋지 않은 선택입니다. 물론 구현할 수는 있지만, 알렉스 마르텔리(Alex Mertelli)의 보르그(Borg)를 사용하면 더 파이썬다운 코드를 작성하면서 같은 효과를 얻을 수 있습니다.