Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬의 던더 또는 매직 메소드

<시간/>

객체 지향 프로그래밍에서 꽤 깔끔한 트릭을 할 수 있게 해주는 마법의 방법. 이러한 메서드는 접두사와 접미사로 사용되는 두 개의 밑줄(__)로 식별됩니다. 예를 들어 특정 조건이 충족되면 자동으로 호출되는 인터셉터로 기능합니다.

파이썬에서 __repr__은 객체의 "공식" 문자열 표현을 계산하는 데 사용되는 내장 함수이고, __str__은 객체의 "비공식" 문자열 표현을 계산하는 내장 함수입니다.

예시 코드

class String:
   # magic method to initiate object
   def __init__(self, string):
      self.string = string
# Driver Code
if __name__ == '__main__':
   # object creation
   my_string = String('Python')
   # print object location
   print(my_string)

출력

<__main__.String object at 0x000000BF0D411908>

예시 코드

class String:
   # magic method to initiate object
   def __init__(self, string):
      self.string = string
   # print our string object
   def __repr__(self):
      return 'Object: {}'.format(self.string)
# Driver Code
if __name__ == '__main__':
   # object creation
   my_string = String('Python')
   # print object location
   print(my_string)

출력

Object: Python

문자열을 추가하려고 합니다.

예시 코드

class String:
   # magic method to initiate object
   def __init__(self, string):
      self.string = string
   # print our string object
   def __repr__(self):
      return 'Object: {}'.format(self.string)
# Driver Code
if __name__ == '__main__':
   # object creation
   my_string = String('Python')
   # concatenate String object and a string
   print(my_string + ' Program')

출력

TypeError: unsupported operand type(s) for +: 'String' and 'str'

이제 String 클래스에 __add__ 메소드 추가

예시 코드

class String:
   # magic method to initiate object
   def __init__(self, string):
      self.string = string
   # print our string object
   def __repr__(self):
      return 'Object: {}'.format(self.string)
   def __add__(self, other):
      return self.string + other
# Driver Code
if __name__ == '__main__':
   # object creation
   my_string = String('Hello')
   # concatenate String object and a string
   print(my_string +' Python')

출력

Hello Python