logo

Python의 Dunder 또는 매직 메소드

Python 매직 메소드 이중 밑줄 '__'로 시작하고 끝나는 메소드입니다. 이는 Python의 내장 클래스에 의해 정의되며 일반적으로 연산자 오버로드에 사용됩니다.

그들은 또한 불린다 던더 방법, 여기서 Dunder는 Double Under(밑줄)을 의미합니다.



Python 매직 메소드

내장 클래스는 많은 매직 메소드를 정의합니다. 너() 함수는 클래스가 상속한 매직 ​​메서드를 보여줄 수 있습니다.

예:

이 코드는 상속된 매직 메소드를 표시합니다. 정수 수업.



파이썬3






# code> print>(>dir>(>int>))>

>

>

산출

['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '_...>

또는 cmd/terminal을 사용하여 Python의 매직 함수 목록을 가져오고, cmd 또는 터미널을 열고 python3을 입력하여 Python 콘솔로 이동한 후 다음을 입력할 수 있습니다.

>>> 말하다(int)>

산출:

Python의 매직 메소드

Python 매직 메소드

다음은 Python 매직 메소드와 그 용도 목록입니다.

초기화 및 구성

  • __새로운__ : 객체의 인스턴스화에서 호출됩니다.
  • __더운__ : __new__ 메소드에 의해 호출됩니다.
  • __의__ : 소멸자입니다.

숫자 마법 방법

자바 수면
  • __트렁크__ (본인): math.trunc()에 대한 동작을 구현합니다.
  • __올림__ (본인): math.ceil()에 대한 동작을 구현합니다.
  • __바닥__ (본인): math.floor()에 대한 동작을 구현합니다.
  • __둥근__ (자신,n): 내장된 round()에 대한 동작을 구현합니다.
  • __invert__(자체): ~ 연산자를 사용하여 반전 동작을 구현합니다.
  • __abs__(자신): 내장된 ABS()에 대한 동작을 구현합니다.
  • __neg__(자신): 부정에 대한 동작을 구현합니다.
  • __pos__(자신): 단항 긍정에 대한 동작을 구현합니다.

산술 연산자

  • __추가하다__ (본인, 기타): math.trunc()에 대한 동작을 구현합니다.
  • __sub__(본인, 기타): math.ceil()에 대한 동작을 구현합니다.
  • __나는 가지고있다__ (본인, 기타): math.floor()에 대한 동작을 구현합니다.
  • __floordiv__ (본인, 기타): 내장된 round()에 대한 동작을 구현합니다.
  • __div__(본인, 기타): ~ 연산자를 사용하여 반전 동작을 구현합니다.
  • __truediv__(본인, 기타): 내장된 ABS()에 대한 동작을 구현합니다.
  • __mod__(자신, 기타): 부정에 대한 동작을 구현합니다.
  • __divmod__(자신, 기타): 단항 긍정에 대한 동작을 구현합니다.
  • __펑__: ** 연산자를 사용하여 지수에 대한 동작을 구현합니다.
  • __lshift__(본인, 기타): << 연산자를 사용하여 왼쪽 비트 단위 이동을 구현합니다.
  • __rshift__(자신, 기타): >> 연산자를 사용하여 오른쪽 비트 단위 이동을 구현합니다.
  • __및__(본인, 기타): 비트 단위로 구현하고 & 연산자를 사용합니다.
  • __또는__(본인, 기타): 비트 단위로 구현하거나 | 운영자.
  • __xor__(본인, 기타): ^ 연산자를 사용하여 비트 xor를 구현합니다.

문자열 매직 방법

  • __str__ (본인): 클래스 인스턴스에서 str()이 호출될 때의 동작을 정의합니다.
  • __대표_ _(본인): ㅇ o 기계가 읽을 수 있는 유형의 표현을 반환하기 위해 내장형 repr() 메서드에 의해 호출됩니다.
  • __유니코드__(자신): 이 메서드는 특정 유형의 유니코드 문자열을 반환합니다.
  • __format__(자체, 형식str): 새로운 스타일의 문자열을 반환합니다.
  • __해시시_ _(본인): 정수를 반환해야 하며 그 결과는 사전의 빠른 키 비교에 사용됩니다.
  • __0이 아닌__(자신): 클래스 인스턴스에서 bool()이 호출될 때의 동작을 정의합니다.
  • __너_ _(본인): 클래스의 속성 목록을 반환하는 메서드입니다.
  • __크기__( 본인): 객체의 크기를 반환합니다.

비교 마법 방법

  • __eq__ (본인, 기타): 항등 연산자 ==의 동작을 정의합니다.
  • __ne__(자신, 기타): 불평등 연산자 !=의 동작을 정의합니다.
  • __lt__ (본인, 기타): 보다 작음 연산자 <에 대한 동작을 정의합니다.
  • __gt__ (본인, 기타): 보다 큼 연산자>의 동작을 정의합니다.
  • __le__(본인, 기타): 작거나 같음 연산자 <=의 동작을 정의합니다.
  • __ge__ (본인, 기타): 보다 크거나 같음 연산자>=에 대한 동작을 정의합니다.

Python의 Dunder 또는 Magic 메소드

예제와 함께 Python 매직 메소드 중 일부를 살펴보겠습니다.

1. __init__ 방법

그만큼 __init__ 메서드 초기화를 위해 C++, Java, C#, PHP 등과 같은 특정 다른 프로그래밍 언어의 생성자와 같이 클래스의 인스턴스가 생성될 때 호출 없이 호출됩니다.

이러한 메소드로 인해 명시적인 유형 변환 없이 '+' 연산자를 사용하여 두 개의 문자열을 추가할 수 있습니다.

파이썬3


땅콩 대 땅콩



# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># print object location> >print>(string1)>

>

>

산출

>

2. __repr__ 방법

__대표__ Python의 메소드는 객체가 문자열로 표시되는 방법을 정의합니다.

아래 코드 조각은 문자열 개체의 메모리 주소만 인쇄합니다. 객체를 표현하기 위해 __repr__ 메소드를 추가해 보겠습니다.

파이썬3




# declare our own string class> 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> >string1>=> String(>'Hello'>)> > ># print object location> >print>(string1)>

>

>

산출

Object: Hello>

문자열을 추가하려고 하면 다음과 같습니다.

파이썬3




# declare our own string class> 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> >string1>=> String(>'Hello'>)> > ># concatenate String object and a string> >print>(string1>+>' world'>)>

>

>

산출:

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

3. __add__ 메소드

__add__ 메소드 Python에서는 클래스의 객체를 어떻게 추가할지 정의합니다. 오버로드된 덧셈 연산자라고도 합니다.

이제 String 클래스에 __add__ 메소드를 추가하십시오.

파이썬

CSS 목록




# declare our own string class> 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> >string1>=> String(>'Hello'>)> > ># concatenate String object and a string> >print>(string1>+>' Geeks'>)>

>

>

산출

Hello Geeks>

우리는 Python 매직 메소드 또는 Dunder 메소드 중 일부에 대해 논의했습니다. Python의 매직 메서드는 클래스의 다양한 기능에 사용될 수 있습니다.

이 기사에서 Python 매직 메소드에 대해 배우고 이를 프로젝트에 사용하시기 바랍니다.