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. 4. -특정 클래스 메소드 사용된 예제 튜토리얼위 내용은 Python의 네 가지 매직 메서드에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!