Python ใช้คำว่า"magic method"เนื่องจากวิธีการเหล่านั้นช่วยให้คุณสามารถตั้งโปรแกรมได้อย่างมหัศจรรย์ ข้อดีอย่างหนึ่งของการใช้เมธอดเวทย์มนตร์ของ Python คือพวกมันมีวิธีง่ายๆในการทำให้อ็อบเจกต์ทำงานเหมือนบิวท์อิน นั่นหมายความว่าคุณสามารถหลีกเลี่ยงวิธีปฏิบัติตัวดำเนินการขั้นพื้นฐานที่น่าเกลียดไม่เป็นธรรมชาติ
ลองพิจารณาตัวอย่างต่อไปนี้:
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'
สิ่งนี้ทำให้เกิดข้อผิดพลาดเนื่องจากประเภทพจนานุกรมไม่รองรับการเพิ่ม ตอนนี้มาขยายคลาสพจนานุกรมและเพิ่มเมธอดมายากล"__add__" :
class AddableDict(dict):
def __add__(self, otherObj):
self.update(otherObj)
return AddableDict(self)
dict1 = AddableDict({1 : "ABC"})
dict2 = AddableDict({2 : "EFG"})
print (dict1 + dict2)
ตอนนี้ให้ผลลัพธ์ต่อไปนี้
{1: 'ABC', 2: 'EFG'}
ดังนั้นการเพิ่มวิธีนี้ทันใดนั้นเวทมนตร์ก็เกิดขึ้นและข้อผิดพลาดที่คุณได้รับก่อนหน้านี้ก็หายไป
ฉันหวังว่ามันจะทำให้ทุกอย่างชัดเจนสำหรับคุณ สำหรับข้อมูลเพิ่มเติมโปรดดูที่:
คำแนะนำเกี่ยวกับ Magic Methods ของ Python (Rafe Kettler, 2012)
len()
หรือreversed()
ใช้กับวัตถุหลายประเภท แต่วิธีการเช่นappend()
ใช้กับลำดับเท่านั้นเป็นต้น