WeniVooks

검색

파이썬 클래스 톺아보기

매직 메서드 - 숫자 표현

1. __abs__ 메서드

__abs__ 메서드는 내장 함수 abs()가 호출될 때 실행됩니다. 객체의 절대값을 정의할 때 사용합니다.

class Number: def __init__(self, value): self.value = value def __abs__(self): return abs(self.value) num = Number(-5) print(abs(num)) # 출력: 5

2. __bool__ 메서드

__bool__ 메서드는 객체의 참/거짓을 판단할 때 사용합니다. if 문이나 bool() 함수에서 호출됩니다.

class Number: def __init__(self, value): self.value = value def __bool__(self): return self.value != 0 num = Number(0) print(bool(num)) # 출력: False
2.1 __bool__의 우선순위
  1. __bool__ 메서드 호출
  2. __len__ 메서드 호출 (위 메서드가 없는 경우)
  3. 항상 True 반환 (위 메서드들이 모두 없는 경우)
class Collection: def __init__(self, items): self.items = items def __len__(self): return len(self.items) coll = Collection([]) print(bool(coll)) # 출력: False (빈 컬렉션)

3. __int__, __float__ 메서드

이 메서드들은 객체를 숫자로 변환할 때 사용됩니다. int(), float() 함수 호출 시 실행됩니다.

class Score: def __init__(self, value): self.value = value def __int__(self): return int(self.value) def __float__(self): return float(self.value) score = Score(85.5) print(int(score)) # 출력: 85 print(float(score)) # 출력: 85.5

4. 실제 활용 예시

숫자 관련 매직메서드들은 수학적 개념을 표현하는 클래스를 만들 때 유용합니다.

class Temperature: def __init__(self, celsius): self.celsius = celsius def __float__(self): return float(self.celsius) def __bool__(self): return self.celsius > 0 def __abs__(self): return abs(self.celsius) temp = Temperature(-5) print(f"영상입니까? {bool(temp)}") # False print(f"온도 차이: {abs(temp)}도") # 5도 print(f"섭씨: {float(temp)}도") # -5.0도
{"packages":["numpy","pandas","matplotlib","lxml"]}
3.3 매직 메서드 - 문자열 표현3.5 매직 메서드 - 컬렉션