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-Beispielen3. 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!