본문 바로가기
Python/개념

Day 7-2. 파이썬 스페셜(매직) 메소드

by 사라리24 2024. 3. 18.
SMALL

1. 스페셜 메서드

   파이썬의 스페셜 메서드 (또는 매직 메서드라고도 불림)는 더블 언더스코어(__)로 시작하고 끝나는 메서드 이름을 갖습니다. 이 메서드들은 특정 구문이나 내장 함수를 사용할 때 파이썬 인터프리터에 의해 자동으로 호출됩니다.

예를 들어, 객체에 대해 + 연산자를 사용하면 해당 객체의 __add__ 메서드가 호출됩니다. 또는 len() 함수를 사용하면 __len__ 메서드가 호출됩니다.


1. __init__ : 객체 초기화 메서드

2. __str__ : 객체를 문자열로 표현하는 메서드. print() 함수나 str() 함수를 사용할  호출됩니다.

 
  
  class Book:
      def __init__(self, title):
          self.title = title

  book = Book("미친듯이 재밌는 파이썬")
  print(book)  
  print(str(book))    #주소값출력

  class Book:
      def __init__(self, title):
          self.title = title

      def __str__(self) # object 클래스를 오버라이딩 
                                     __str__ 함수 속성이 바뀜 
          return self.title   

  book = Book("미친듯이 재밌는 파이썬")
  print(book)   
  print(str(book))   #주소가 아닌 속성값이 나오게 바뀜
 
<__main__.Book object at 0x7c2693f77850>
<__main__.Book object at 0x7c2693f77850>
미친듯이 재밌는 파이썬
미친듯이 재밌는 파이썬

 

3. __add__ : + 연산자를 사용할  호출되는 메서드

 
  class Calc:
      def __init__(self, value): 
          self.value = value

      def __add__(self, other):
          return self.value + other.value

  num1 = Calc(5)
  result = num1 + 10  
  print(result)   # 5 + 10 = 15가 나올까?
 
오류 실행안됨
  
  class Calc:
      def __init__(self, value):
          self.value = value

      def __add__(self, other):
          return self.value + other.value

  num1 = Calc(5)
  num2 = Calc(10)
  result = num1 + num2 # 실행됨
  print(result
 
15

 

4. __len__ : len() 함수를 사용할  호출되는 메서드

  
  class Queue:
      def __init__(self):
          self.items = []

      def __len__(self):
          return len(self.items)

  queue = Queue()
  print(queue)
  print(len(queue))
 

 

<__main__.Queue object at 0x7c2693f77490>
5

 

5. __getitem__ : 인덱싱을 사용할  호출되는 메서드

 
  class Point:
      def __init__(self, x, y):
          self.x = x
          self.y = y
  print(p1[0], p1[1], p1[100])

      def __getitem__(self, index): # __getitem__에 오버라이딩 /  키를 가져오는 함수
          if index == 0:
              return self.x
          elif index == 1:
              return self.y
          else:
              return -1

  p1 = Point(3, 4)
  print(p1[0], p1[1], p1[100])
 
5 3 -1

 

6. __call__ : 객체를 함수처럼 호출할  사용되는 메서드

 
 
  class CallableObject:
      def __call__(self, *args, **kwargs):
          print(f"Called with arguments: {args} and keyword arguments: {kwargs}")

  callable_obj = CallableObject()
  callable_obj(1, 2, 3, a="A", b="B")
 

 

Called with arguments: () and keyword arguments: {}
Called with arguments: (10, 20, 30, 40, 50) and keyword arguments: {'a': 'A', 'b': 'B'}

'Python > 개념' 카테고리의 다른 글

Day 6. 과제_가위바위보  (0) 2024.03.18
Day 7-3. 파이썬의 예외처리  (0) 2024.03.18
Day 7-1. 파이썬 상속  (0) 2024.03.18
Day 6-3. 객체지향과 클래스  (0) 2024.03.18
Day 6-2. 콜백함수와 람다함수  (0) 2024.03.15