Python's magic method is usually named in the form of _methodname_, such as: __init__ (Construction method) _ getitem, setitem (subscriptable required method), delitem (del obj[key] required method, len (len(...) ) Required method, etc.
In Python, if we want to create classes similar to sequences and maps, we can simulate them by rewriting magic methods getitem, setitem, delitem, len.
The function of magic method:
_ getitem_ (self, key): Returns the value corresponding to the key.
_ setitem (self, key, value): Sets the value of a given key
_ Deltem_ (self, key): Delete the element corresponding to a given key.
_ len_(): Number of elements returned
Output results:# coding:utf-8 ''' desc: Trying to define a new data type //Arithmetic progression 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={} # Define the method to get the value def __getitem__(self,key): print 'Call function __getitem__' try: return self.myData[key] except KeyError: return self.start+key*self.step # Definition of assignment method def __setitem__(self,key,value): print 'Call function __setitem__' self.myData[key]=value # Define the method of obtaining length def __len__(self): print 'Call function __len__' # In order to see the effect of _len_, we intentionally increase length by 1. return len(self.myData) + 1 # Define methods to delete elements def __delitem__(self, key): print 'Call function __delitem__' del self.myData[key] s=ArithemeticSequence(1,2) print s[3] # Here you should execute self.start+key*self.step, because there is no three keys s[3] = 100 # Assignment print s[3] # The assignment is done before, then the direct output assignment value is 100 print len(s) # We deliberately added 1 more and should return 2 del s[3] # Delete 3 key
The principle of these magic methods is that when we subscribe to the attribute item of a class, it will be intercepted by getitem (), setitem (), delitem (), so as to perform the operations we set in the method, such as assignment, modification of content, deletion of content and so on.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