WeniVooks

검색

파이썬 클래스 톺아보기

매직 메서드 - 수치와 산술 연산

1. 단항 연산자

파이썬에서는 -, +, abs() 같은 단항 연산자를 위한 매직 메서드를 제공합니다.

class Number: def __init__(self, value): self.value = value def __neg__(self): # -n return Number(-self.value) def __pos__(self): # +n return Number(self.value) def __abs__(self): # abs(n) return Number(abs(self.value)) def __str__(self): return str(self.value) n = Number(5) print(f"원본: {n}") # 5 print(f"음수: {-n}") # -5 print(f"양수: {+n}") # 5 print(f"절대값: {abs(n)}") # 5 n = Number(-3) print(f"절대값: {abs(n)}") # 3

2. 이항 산술 연산자

두 개의 피연산자를 사용하는 기본적인 산술 연산자들입니다.

class Point: def __init__(self, x, y): self.x = x self.y = y def __add__(self, other): # self + other return Point(self.x + other.x, self.y + other.y) def __sub__(self, other): # self - other return Point(self.x - other.x, self.y - other.y) def __mul__(self, scalar): # self * scalar return Point(self.x * scalar, self.y * scalar) def __str__(self): return f"Point({self.x}, {self.y})" p1 = Point(1, 2) p2 = Point(3, 4) print(f"더하기: {p1 + p2}") # Point(4, 6) print(f"빼기: {p2 - p1}") # Point(2, 2) print(f"곱하기: {p1 * 3}") # Point(3, 6)

3. 복합 할당 연산자

+=, -= 같은 복합 할당 연산자는 별도의 매직 메서드를 사용합니다. 여기서 앞에 iin-place를 의미합니다.

class Counter: def __init__(self, value): self.value = value def __iadd__(self, other): # self += other self.value += other return self def __isub__(self, other): # self -= other self.value -= other return self def __str__(self): return str(self.value) c = Counter(10) print(f"처음: {c}") # 10 c += 5 print(f"더하기: {c}") # 15 c -= 3 print(f"빼기: {c}") # 12

4. 비교 연산자

<, >, == 같은 비교 연산자도 구현할 수 있습니다.

class Grade: def __init__(self, score): self.score = score def __lt__(self, other): # self < other return self.score < other.score def __eq__(self, other): # self == other return self.score == other.score def __str__(self): return f"Grade({self.score})" math = Grade(85) science = Grade(90) print(f"수학 < 과학: {math < science}") # True print(f"수학 == 과학: {math == science}") # False

5. 실제 활용 예시

실제 프로그램에서 사용할 수 있는 예시입니다. 가장 자주 사용하는 class 자료형에 수학 수식을 적용하면 어떨지를 먼저 상상해보고 적용하는 것을 권합니다. 수학수식이 필요하지 않은 경우도 있습니다.

class Book: def __init__(self, name, price): self.name = name self.price = price def __add__(self, other): return self.price + other.price def __sub__(self, other): return self.price - other.price def __mul__(self, count): return self.price * count def __str__(self): return f"Book({self.name}, {self.price})" book1 = Book("파이썬", 10000) book2 = Book("자바", 15000) print(f"더하기: {book1 + book2}") # Book(25000)
{"packages":["numpy","pandas","matplotlib","lxml"]}
3.6 매직 메서드 - 반복3.8 매직 메서드 - 비교 연산