Python’s magic methods are generally named in the form of methodname, such as: init (constructor method), getitem, setitem (method required by subscriptable), delitem (method required by del obj[key]), len (len(...) required method), etc.
In Python, if we want to create classes similar to sequences and mappings, we can simulate them by overriding the magic methods getitem, setitem, delitem, and len methods.
The role of the magic method:
getitem(self,key): Returns the value corresponding to the key.
setitem(self,key,value): Set the value of the given key
delitem(self,key): Delete the element corresponding to the given key.
len(): Returns the number of elements
Code example:
# 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被删了
Output result:
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
The principle of these magic methods is: when we When the attribute item of a class performs a subscript operation, it will first be intercepted by getitem(), setitem(), and delitem(), so that the operations we set in the method can be performed, such as assigning values, modifying content, deleting content, etc.
[Related recommendations]
1. In-depth understanding of the special function __len__(self) in python
2. Must master Little knowledge--Detailed explanation of Python len examples
3. Summary of examples of using the len() function in Python
4. Python special class methods Example tutorials used
The above is the detailed content of Detailed introduction to four magic methods in Python. For more information, please follow other related articles on the PHP Chinese website!