파이썬 매직 메소드 ( "이중 밑줄"방법의 짧음)는 이중 밑줄 ( __
)으로 시작하고 끝나는 특수 메소드입니다. 이들은 내장 연산자 및 기능에 대한 응답으로 객체 및 클래스의 동작을 사용자 정의하는 방법을 제공합니다. 이러한 방법은 프로그래머가 직접 호출하지 않습니다. 대신, 클래스의 객체에서 특정 작업이 수행 될 때 Python 통역사에 의해 암시 적으로 호출됩니다. 예를 들어,
연산자를 사용하여 두 개의 객체를 함께 추가하면 Python은 해당 객체의 클래스가 __ add __
Magic 메소드를 정의하는지 내부적으로 확인합니다. 그렇다면, 그 방법은 추가를 수행하도록 호출됩니다. 그렇지 않으면 typeerror
가 제기됩니다. 이러한 방법을 사용하면 사용자 정의 클래스가 Python의 핵심 기능과 상호 작용하는 방식을 정의하여 코드가보다 직관적이고 피스닉을 만들 수 있습니다. 기본적으로 내장 운영자의 기능과 기능을 확장하여 자신의 사용자 정의 데이터 구조와 완벽하게 작동합니다. "Dunder"라는 이름은 이름을 둘러싼 이중 밑줄에서 비롯된 구어체입니다.
Python에서 오퍼레이터 과부하는 특정 마법 방법을 사용하여 달성됩니다. 각 연산자는 사용자 정의 클래스의 객체에 적용될 때 어떻게 행동 해야하는지 정의하는 해당 마법 방법을 가지고 있습니다. 예를 들어 :
__ add __ (자체, 기타)
:
연산자를 과부하합니다. 이 방법은 self
(클래스의 인스턴스) 및 기타
(추가되는 객체)를 인수로 사용합니다. 추가 결과를 반환해야합니다. __ sub __ (self, 기타)
: -
연산자. 연산자. __ truediv __ (자체, 기타)
: /
운영자를 과부하시킵니다. __ floordiv __ (자체, 기타)
/Code> Operator (바닥. DIVISION). (지수). to). to). to). f & quot; vector ({self.x}, {self.y}) & quot; v1 = 벡터 (1, 2) v2 = 벡터 (3, 4) v3 = v1 v2 print (v3) # 출력 : 벡터 (4, 6)
이 예에서 __ add <code> vector
대상에 대한
운영자를 과부하합니다. 완전한 연산자 과부하를 위해 add 및 radd 메소드를 모두 정의해야합니다. radd 사용자 정의 객체가 연산자 오른쪽에있는 경우를 처리합니다. 다른 연산자들에게도 비슷한 쌍이 존재합니다.
마법 방법은 강력하고 직관적 인 클래스를 구축하는 데 중요합니다. 몇 가지 일반적인 사용 사례는 다음과 같습니다.
__ str __ (self)
및 __ __ (self)
riting 또는 CODE가 어떻게 표시 될 때 __ str __
는 사용자 친화적 인 표현을 제공해야하지만 __ repr __
는 명백하고 디버깅에 적합해야합니다. __ iter __ (self)
및 __ (self __ __ __)
는 대상을 창출 할 수 있습니다. 의 __ (self)
및 __ exit __ (self)
는 와 함께 사용됩니다 (EG, 파일 취급, 데이터베이스 연결). __ getAttr __ (self, name)
및 __ statattr __ (self, name, value)
속성에 액세스하고 수정되는 방법을 사용자 정의 할 수 있습니다. __ len __
, __ getItem __
, __ setItem __
와 같은 사용자 정의 수집을 구현할 수 있도록 허용합니다. 직관적 인 행동을 가진 맞춤형 클래스 생성? 많은 마법 방법이 존재하는 반면, 일부는 잘 행동하는 커스텀 클래스를 만드는 데 더 근본적입니다. __ repr __ (self)
: 객체의 사람이 읽을 수 있고 명백한 문자열 표현을 제공합니다.
__ eq __ (자체, 기타)
클래스의 대상을 정의하는 데 중요합니다. len ()
함수를 사용할 수 있습니다. 이 네 가지 4 개는 종종 사용자 지정 클래스를 예측 가능하고 사용자 친화적 인 방식으로 작동시키는 데 필요한 최소입니다. 다른 마법 방법을 추가하면 구현하려는 특정 기능에 따라 다르지만이 네 가지는 파이썬에서 잘 설계된 클래스를 만드는 견고한 기초를 제공합니다.
위 내용은 Python Magic Methods (Dunder Methods) 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!