>  기사  >  백엔드 개발  >  Python의 네 가지 매직 메서드에 대한 자세한 소개

Python의 네 가지 매직 메서드에 대한 자세한 소개

高洛峰
高洛峰원래의
2017-05-23 15:44:272064검색

Python의 매직 메서드는 일반적으로 init(생성자 메서드), getitem, setitem(subscriptable에 필요한 메서드), delitem(del obj[key]에 필요한 메서드), len(len( …) 필수 방법) 등

Python에서 시퀀스 및 매핑과 유사한 클래스를 생성하려면 매직 메소드 getitem, setitem, delitem 및 len 메소드를 재정의하여 이를 시뮬레이션할 수 있습니다.

매직 메소드의 기능:

getitem(self,key): 키에 해당하는 값을 반환합니다.

setitem(self,key,value): 주어진 키의 값을 설정합니다.

delitem(self,key): 주어진 키에 해당하는 요소를 삭제합니다.

len(): 요소 수를 반환합니다.

코드 예:

# coding:utf-8
'''
    desc:尝试定义一种新的数据类型
          等差数列
    author:pythontab.com
'''
class ArithemeticSequence(object):
    def init(self,start=0,step=1):
        print 'Call function init'
        self.start=start
        self.step=step
        self.myData={}
    # 定义获取值的方法
    def getitem(self,key):
        print 'Call function getitem'
        try:
            return self.myData[key]
        except KeyError:
           return self.start+key*self.step
    # 定义赋值方法
    def setitem(self,key,value):
        print 'Call function setitem'
        self.myData[key]=value
    # 定义获取长度的方法
    def len(self):
        print 'Call function len'
        # 这里为了可以看出len的作用, 我们故意把length增加1
        return len(self.myData) + 1
    # 定义删除元素的方法
    def delitem(self, key):
        print 'Call function delitem'
        del self.myData[key]
    
s=ArithemeticSequence(1,2)
print s[3]  # 这里应该执行self.start+key*self.step,因为没有3这个key
s[3] = 100  # 进行赋值
print s[3]  # 前面进行了赋值,那么直接输出赋的值100
print len(s) # 我们故意多加了1,应该返回2
del s[3] # 删除3这个key
print s[3] # 这里应该执行self.start+key*self.step,因为3这个key被删了

출력 결과:

Call function init
Call function getitem
7
Call function setitem
Call function getitem
100
Call function len
2
Call function delitem
Call function getitem
7

이러한 매직 메서드의 원리는 다음과 같습니다. 클래스의 속성 항목이 아래 첨자 작업을 수행할 때 먼저 getitem(), setitem() 및 delitem()에 의해 가로채어 값 할당과 같이 메소드에서 설정한 작업을 수행할 수 있습니다. 콘텐츠 수정, 콘텐츠 삭제 등

[관련 추천]

1. 파이썬의 특수 함수 __len__(self)에 대한 심층적 이해

2. master 작은 지식 - Python len 예제에 대한 자세한 설명

3.

Python의 len() 함수 사용 예제 요약

4. -특정 클래스 메소드 사용된 예제 튜토리얼

위 내용은 Python의 네 가지 매직 메서드에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.