Python "sihirli yöntemler" kelimesini kullanır , çünkü bu yöntemler programınız için gerçekten sihir yapar. Python'un sihirli yöntemlerini kullanmanın en büyük avantajlarından biri, nesnelerin yerleşik tipler gibi davranmasını sağlamak için basit bir yol sağlamasıdır. Bu, temel operatörleri gerçekleştirmenin çirkin, sezgisel olmayan ve standart olmayan yollarından kaçınabileceğiniz anlamına gelir.
Aşağıdaki bir örneği ele alalım:
dict1 = {1 : "ABC"}
dict2 = {2 : "EFG"}
dict1 + dict2
Traceback (most recent call last):
File "python", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
Sözlük türü eklemeyi desteklemediğinden bu bir hata verir. Şimdi sözlük sınıfını genişletelim ve "__add__" sihirli yöntemini ekleyelim :
class AddableDict(dict):
def __add__(self, otherObj):
self.update(otherObj)
return AddableDict(self)
dict1 = AddableDict({1 : "ABC"})
dict2 = AddableDict({2 : "EFG"})
print (dict1 + dict2)
Şimdi aşağıdaki çıktıyı veriyor.
{1: 'ABC', 2: 'EFG'}
Böylece, bu yöntemi ekleyerek, aniden sihir oldu ve daha önce aldığınız hata ortadan kalktı.
Umarım her şeyi size açıklar. Daha fazla bilgi için, bakınız:
Python'un Sihirli Yöntemleri Rehberi (Rafe Kettler, 2012)
len()
yareversed()
nesnelerin birçok türleri için de geçerlidir, fakat bir yöntem gibiappend()
yalnızca vb dizileri için de geçerlidir