Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Overloading Operators ทำงานใน Python อย่างไร


เราทราบดีว่าเราสามารถใช้ + โอเปอเรเตอร์ในการเพิ่มตัวเลขและในขณะเดียวกันก็เชื่อมสตริงเข้าด้วยกัน สิ่งนี้เป็นไปได้เนื่องจากตัวดำเนินการ + โอเวอร์โหลดโดยทั้งคลาส 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