logo

파이썬 특수 메서드 정리 📂프로그래밍

파이썬 특수 메서드 정리

개요

파이썬에서는 특정한 이름을 가진 메서드를 정의하여 클래스의 인스턴스에 대한 연산을 정의할 수 있다. 이러한 메서드들을 특수 메서드special methods, magic methods라고 한다. 이름의 앞뒤에 __를 붙여 정의하며, 이러한 특징으로 인해 dunder method (double underscore method)라고도 불린다.

__init____call__

  • __init__: 인스턴스 초기화를 위한 메서드. 인스턴스를 정의할 때 안의 내용이 자동 실행됨.
  • __call__: 인스턴스가 호출됐을 때 실행되는 것. 함수처럼 쓸 수 있게 해주는 것.
class Add:
    def __init__(self, a, b):
        self.a = a
        self.b = b
        print(f"a = {self.a}, b = {self.b}")
    def __call__(self, x, y):
        c = self.a*x + self.b*y
        print(f"{self.a}*{x} + {self.b}*{y} = {c}")

>>> c = Add(1,2)
a = 1, b = 2

>>> c(3,4)
1*3 + 2*4 = 11

__str____repr__

  • __str__: 객체의 정보를 가독성 좋게 정리한 문자열을 반환. print(obj) == str(obj) == obj.__str__()
  • __repr__: 객체를 재현할 수 있는 문자열을 반환. eval(repr(obj)) == obj가 성립하도록 정의하는 것이 권장됨. obj.__repr__()는 REPL에서 객체 이름을 입력했을 때 출력되는 정보와 같음.
>>> import datetime

>>> dt = datetime.datetime(2025, 4, 15, 16, 53, 45)


>>> dt.__str__()
'2025-05-28 16:53:45'
>>> str(dt)
'2025-05-28 16:53:45'
>>> print(dt)
2025-05-28 16:53:45

>>> dt.__repr__()
'datetime.datetime(2025, 5, 28, 16, 53, 45)'
>>> repr(dt)
'datetime.datetime(2025, 5, 28, 16, 53, 45)'
>>> dt
datetime.datetime(2025, 5, 28, 16, 53, 45)