Home >Backend Development >Python Tutorial >Detailed introduction to four magic methods in Python

Detailed introduction to four magic methods in Python

高洛峰
高洛峰Original
2017-05-23 15:44:272121browse

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn