Maison >développement back-end >Tutoriel Python >Introduction détaillée à quatre méthodes magiques en Python

Introduction détaillée à quatre méthodes magiques en Python

高洛峰
高洛峰original
2017-05-23 15:44:272126parcourir

Les méthodes magiques de Python sont généralement nommées sous la forme de nom de méthode, telles que : init (méthode constructeur), getitem, setitem (méthode requise par subscriptable), delitem (méthode requise par del obj[key]), len (len( …) méthode requise), etc.

En Python, si nous voulons créer des classes similaires à des séquences et des mappages, nous pouvons les simuler en remplaçant les méthodes magiques getitem, setitem, delitem et len.

La fonction de la méthode magique :

getitem(self,key) : Renvoie la valeur correspondant à la clé.

setitem(self,key,value) : Définir la valeur de la clé donnée

delitem(self,key) : Supprimer l'élément correspondant à la clé donnée.

len() : Renvoie le nombre d'éléments

Exemple de code :

# 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被删了

Résultat de sortie :

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

Le principe de ces magies méthodes est : lorsque nous inscrivons l'élément d'attribut d'une classe, il sera d'abord intercepté par getitem(), setitem() et delitem(), afin que nous puissions effectuer les opérations que nous avons définies dans la méthode, telles que l'attribution de valeurs, modification du contenu, suppression du contenu, etc. attendez.

[Recommandations associées]

1. Compréhension approfondie de la fonction spéciale __len__(self) en python

2. maître Peu de connaissances - Explication détaillée des exemples de len Python

3

Résumé des exemples d'utilisation de la fonction len() en Python

4. Méthodes de classe spécifiques à Python Exemples de tutoriels utilisés

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn