Python 에서 자주 사용 하 는 마법 방법 을 정리 합 니 다.

6434 단어 Python매 직방법.
1.산수 연산 자의 마법 방법
  • python 2.2 이후 유형 과 유형 을 통일 시 켰 다.방법 은 int(),float(),str(),list(),tuple()등 BIF 를 공장 함수(대상)로 전환 하 는 것 이다
  • 4.567917.다음 산수 연산 자 에 대응 하 는 마법 방법 을 제시 합 니 다.앞 과 뒤 는 모두 쌍 밑줄 로 꼬리 를 감 는 것 이 마법 방법 이 라 고 설명 합 니 다연산 자
    대응 하 는 마법 법
    중국어 주석
    +
    __ add__(self, other)
    덧셈
    -
    __ sub__(self, other)
    감법
    *
    __ mul__(self, other)
    곱셈
    /
    __ truediv__(self, other)
    진 제법
    //
    __ floordiv__(self, other)
    정수 나눗셈
    %
    __ mod__(self, other)
    나머지 나 누 기
    divmod(a, b)
    __ divmod__(self, other)
    나눗셈 과 나머지 연산 결 과 를 결합 하여 divmod(a,b)반환 값 은 원 그룹(a/b,a%b)입 니 다.
    **
    __ pow__(self, other[,modulo])
    self 의 other 차방 에서 modulo 에 게 나머지 를 취하 다.
    <<
    __ lshift__(self, other)
    자리 왼쪽으로 이동
    >>
    __ rshift__(self, other)
    위치 에 따라 오른쪽으로 이동 하 다.
    &
    __ and__(self, other)
    비트 와 조작
    ^
    __ xor__(self, other)
    비트 별 이동 또는 조작(같은 0,다른 1)
    『20008』
    __ or__(self, other)
    비트 단위 또는 조작(1 은 1)
    C
    C
    C
  • eg:
  • 
    >>> type(len)
    <class 'builtin_function_or_method'>            #   BIF
    >>> type(int)
    <class 'type'>             #    (   ),        ,                
    >>> type(dir)
    <class 'builtin_function_or_method'>
    >>> type(list)
    <class 'type'>
    
    >>> a = int('123')        #           a
    >>> b = int('345')
    >>> a + b              #python           
    468
    
  • eg:예 를 들 어 다음 에 비교적 독립 적 인 유형 을 정의 합 니 다.
  • int 를 계승 하고 다시 쓰기add__방법.
    
    >>> class New_int(int):
        def __add__(self,other):
            return int.__sub__(self,other)
        def __sub__(self,other):
            return int.__add__(self,other)
    
        
    >>> a = New_int(3)
    >>> b = New_int(5)
    >>> a + b    #      ,   __add__(self,other)  
    -2
    >>> a - b
    8
    >>>
    
      2:    ,       
    >>> class New_int(int):
        def __add__(self,other):
            return (self + other)  
        def __sub__(self,other):
            return (self - other)
    
    
    >>> class New_int(int):
        def __add__(self,other):
            return (int(self) + int(other))       # self other       ,              __add__()  
        def __sub__(self,other):
            return (int(self) - int(other))
    
        
    >>> a = New_int(3)
    >>> b = New_int(5)
    >>> a + b
    8
    
    2.반 연산 과 관련 된 마법 방법
  • 반 연산 과 관련 된 마법 방법
  • 마법 법
    정의.
    __ radd__(self, other)
    덧셈 을 정의 하 는 행동:+(왼쪽 동작 수가 해당 하 는 동작 을 지원 하지 않 을 때 호출 됨)
    __ rsub__(self, other)
    감법 을 정의 하 는 행위:-(왼쪽 동작 수가 해당 하 는 동작 을 지원 하지 않 을 때 호출 됨)
    __ rmul__(self, other)
    곱셈 을 정의 하 는 행위:*(왼쪽 동작 수가 해당 하 는 동작 을 지원 하지 않 을 때 호출 됨)
    __ rtruediv__(self, other)
    진짜 나눗셈 을 정의 하 는 행동:/(왼쪽 동작 수가 해당 하 는 동작 을 지원 하지 않 을 때 호출 됨)
    __ rfloordiv__(self, other)
    정수 나 누 기 를 정의 하 는 행위://(왼쪽 동작 수가 해당 하 는 동작 을 지원 하지 않 을 때 호출 됨)
    __ rmod__(self, other)
    모드 알고리즘 을 정의 하 는 행동:%(왼쪽 동작 수가 해당 하 는 동작 을 지원 하지 않 을 때 호출 됨)
    __ rdivmod__(self, other)
    divmod()가 호출 될 때의 행동 을 정의 합 니 다.(왼쪽 동작 수가 해당 하 는 동작 을 지원 하지 않 을 때 호출 됨)
    __ rpow__(self, other)
    power()에서 호출 되 거나**연산 되 었 을 때의 행동 을 정의 합 니 다(왼쪽 동작 수가 해당 하 는 동작 을 지원 하지 않 을 때 호출 됨)
    __ rlshift__(self, other)
    비트 왼쪽으로 이동 하 는 행 위 를 정의 합 니 다:<<(왼쪽 동작 수가 해당 하 는 동작 을 지원 하지 않 을 때 호출 됨)
    __ rrshift__(self, other)
    위치 에 따라 오른쪽으로 이동 하 는 행 위 를 정의 합 니 다:>(왼쪽 동작 수가 해당 하 는 동작 을 지원 하지 않 을 때 호출 됨)
    __ rand__(self, other)
    비트 와 동작 을 정의 하 는 행위:&(왼쪽 동작 수가 해당 하 는 동작 을 지원 하지 않 을 때 호출 됨)
    __ rxor__(self, other)
    비트 별 또는 동작 을 정의 합 니 다:^(왼쪽 동작 수가 해당 하 는 동작 을 지원 하지 않 을 때 호출 됨)
    __ ror__(self, other)
    비트 나 동작 을 정의 하 는 행위:20008℃(왼쪽 동작 수가 해당 하 는 동작 을 지원 하지 않 을 때 호출 됨)
    C
    C
    
    >>> class int(int):
        def __add__(self,other):
            return int.__sub__(self,other)
    
        
    >>> a = int(3)
    >>> b = int(2)
    >>> a + b
    1
    
                   ,       'r',   __add__()        __radd__()
    
    >>> a + b
    
      a   ,b    ,  a   __add__()                ,  python      b __radd__()  
    
      :
    
    >>> class Nint(int):
        def __radd__(self,other):
            return int.__sub__(self,other)
    
        
    >>> a = Nint(5)
    >>> b = Nint(3)
    >>> a + b      #  a     __add__()  ,  b __radd__()    
    8
    
      2:
    
    >>> class Nint(int):
        def __radd__(self,other):
            return int.__sub__(self,other)
    
        
    >>> b = Nint(5)
    >>> 3 + b         #  3 __add__()  ,    b    __radd__(self,other)  ,  self b  
    2
    
    eg:주:반 연산 마법 방법 을 다시 쓸 때 는 순서 문제 에 주의해 야 합 니 다.얻 은 것 은 마 이 너 스 였 어야 했 기 때문에 순서 가 바 뀌 었 다.
    在这里插入图片描述  
    3.증분 할당 연산
    증분 할당 연산 의 마법 방법
    마법 법
    정의.
    __ iadd__(self, other)
    할당 덧셈 을 정의 하 는 행동:+=
    __ isub__(self, other)
    할당 감법 을 정의 하 는 행위:-=
    __ imul__(self, other)
    할당 곱셈 을 정의 하 는 행위:*=
    __ itruediv__(self, other)
    할당 참 나눗셈 을 정의 하 는 행위:/=
    __ ifloordiv__(self, other)
    할당 정수 나 누 기 를 정의 하 는 행위:/=
    __ imod__(self, other)
    할당 모드 알고리즘 을 정의 하 는 행위:%=
    __ ipow__(self, other)
    할당 멱 연산 을 정의 하 는 행위:**=
    __ ilshift__(self, other)
    값 을 비트 왼쪽으로 이동 하 는 행 위 를 정의 합 니 다:<=
    __ irshift__(self, other)
    위치 에 따라 오른쪽 으로 위 치 를 옮 기 는 행 위 를 정의 합 니 다:>=
    __ iand__(self, other)
    할당 의 위치 와 동작 을 정의 하 는 행위:&=
    __ ixor__(self, other)
    위치 에 따라 할당 하거나 동작 하 는 행 위 를 정의 합 니 다:^=
    __ ior__(self, other)
    할당 의 위치 나 동작 을 정의 하 는 행위:丨=
    -
    -
    4.1 원 연산 자
    4.567917.일원 조작 부호 의 마법 방법마법 법
    정의.
    __ neg__(self)
    정 호 를 정의 하 는 행동:+x
    __ pos__(self)
    마이너스 행동 정의:-x
    __ abs__(self)
    abs()호출 시 행동 정의
    __ invert__(self)
    위치 에 따라 반대 하 는 행동 정의:~x
    C
    C
    파 이 썬 이 자주 사용 하 는 마법 방법 을 정리 하 는 글 은 여기까지 입 니 다.파 이 썬 의 마법 방법 에 관 한 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기