เราทราบดีว่าเราสามารถใช้ + โอเปอเรเตอร์ในการเพิ่มตัวเลขและในขณะเดียวกันก็เชื่อมสตริงเข้าด้วยกัน สิ่งนี้เป็นไปได้เนื่องจากตัวดำเนินการ + โอเวอร์โหลดโดยทั้งคลาส int และคลาส str โอเปอเรเตอร์นั้นเป็นเมธอดที่กำหนดไว้ในคลาสที่เกี่ยวข้อง การกำหนดวิธีการสำหรับตัวดำเนินการเรียกว่าตัวดำเนินการโอเวอร์โหลด สำหรับเช่น ในการใช้ตัวดำเนินการ + กับอ็อบเจกต์แบบกำหนดเอง เราจำเป็นต้องกำหนดวิธีการที่เรียกว่า __add__ .
ตัวอย่าง
โค้ดต่อไปนี้ทำให้เข้าใจได้ง่ายว่าโอเปอเรเตอร์โอเวอร์โหลดทำงานอย่างไร
import math class Circle: def __init__(self, radius): self.__radius = radius def setRadius(self, radius): self.__radius = radius def getRadius(self): return self.__radius def area(self): return math.pi * self.__radius ** 2 def __add__(self, another_circle): return Circle( self.__radius + another_circle.__radius ) c1 = Circle(3) print(c1.getRadius()) c2 = Circle(6) print(c2.getRadius()) c3 = c1 + c2 # This is because we have overloaded + operator by adding a method __add__ print(c3.getRadius())
ผลลัพธ์
สิ่งนี้ให้ผลลัพธ์
3 6 9
การปรับเปลี่ยนพฤติกรรมของโอเปอเรเตอร์เพื่อให้ทำงานกับประเภทที่ผู้ใช้กำหนดเรียกว่าโอเปอเรเตอร์โอเวอร์โหลด สำหรับตัวดำเนินการทุกตัวใน Python จะมีวิธีการพิเศษที่เกี่ยวข้องกัน เช่น __add__ สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ docs.python.org/ref/specialnames.html