Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in vier magische Methoden in Python

Detaillierte Einführung in vier magische Methoden in Python

高洛峰
高洛峰Original
2017-05-23 15:44:272064Durchsuche

Pythons magische Methoden werden im Allgemeinen in der Form von Methodennamen benannt, wie zum Beispiel: init (Konstruktormethode), getitem, setitem (von subscriptable benötigte Methode), delitem (von del obj[key] benötigte Methode), len (len( …) erforderliche Methode) usw.

Wenn wir in Python Klassen erstellen möchten, die Sequenzen und Zuordnungen ähneln, können wir diese simulieren, indem wir die magischen Methoden getitem, setitem, delitem und len überschreiben.

Die Funktion der magischen Methode:

getitem(self,key): Gibt den dem Schlüssel entsprechenden Wert zurück.

setitem(self,key,value): Legen Sie den Wert des angegebenen Schlüssels fest.

delitem(self,key): Löschen Sie das Element, das dem angegebenen Schlüssel entspricht.

len(): Gibt die Anzahl der Elemente zurück

Codebeispiel:

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

Ausgabeergebnis:

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

Das Prinzip dieser Magie Methoden sind: Wenn wir das Attributelement einer Klasse subskribieren, wird es zuerst von getitem (), setitem () und delitem () abgefangen, damit wir die in der Methode festgelegten Operationen ausführen können, z. B. das Zuweisen von Werten, Inhalte ändern, Inhalte löschen usw. warten.

[Verwandte Empfehlungen]

Vertiefendes Verständnis der Sonderfunktion __len__(self) in Python

2 Meister Wenig Wissen - Detaillierte Erklärung von Python-LEN-Beispielen

3. Zusammenfassung der Verwendungsbeispiele der len()-Funktion in Python

Python -spezifische Klassenmethoden Verwendete Beispiel-Tutorials

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in vier magische Methoden in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn