전문가를 위한 파이썬(Fluent Python)에 나와있는 분류를 따르면 다음과 같다.

문자열/바이트 표현

__repr__, __str__, __format__, __bytes

앞의 둘은 문자열의 표현에 사용된다. 권장되는 메소드는 __repr__이다.

숫자로 변환

__abs__, __bool__, __complex__, __int__, __float__, __hash__, __index__

__abs__는 ‘절댓값’을 의미한다.

__complex__는 ‘복소수’를 의미한다.

__int__는 ‘정수’를 의미한다.

__float__는 ‘실수’를 의미한다.

__index__는 인덱스 값을 의미한다.

컬렉션 에뮬레이션

__len__, __getitem__, __setitem__, __delitem__, __contains__

반복

__iter__, __reversed__, __next__

dic(매개변수)을 할 경우 __iter__가 표기된다면 해당 매개변수는 for문과 같은 반복문에서 사용할 수 있다.

외워둬야 할 것은 4가지로, list, dict, tuple, set이다.

콜러블 에뮬레이션

__call__

컨텍스트(context) 관리

__enter__, __exit__

객체 생성 및 소멸

__new__, __init__, __del__

본인은 C#을 공부할 적에 해당 부분을 생성자 및 소멸자라고 불렀다.

속성 관리

__getattr__, __getattribute, __setattr__, __delattr__, __dir__

아까 반복에서 말한 dir이 바로 여기에 있다.

속성 디스크립터

__get__, __set__, __delete__

클래스 서비스

__prepare__, __instancecheck__, __subclasscheck__


이하부터는 연산자에 대해서 논의할 것이다.

연산자는 총 47개인데 여기서 책과 레퍼런스에 나온 걸 다 적지는 않을 것이다. 꼭 필요한 것만 골라서 탐구하자.

단항 수치 연산자

__neg__ -

__pos__ +

__abs__ abs()

향상된 비교 연산자

__lt__ <

__le__ <=

__eq__ ==

__ne__ !=

__gt__ >=

__ge__ >=

__add__ +

__sub__ -

__mul__ *

__truediv__ /

__floordiv__ //

__mod__ %

__divmod__ divmod()

__power__ **

비트 연산자

__invert__ ~

__lshift__ «

__rshift__ »

__and__ &

__or__ ****

__xor__ ^