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

การโอเวอร์โหลดออเปอเรเตอร์ (Operator Overloading) ใน Python

สมมติว่าคุณสร้างคลาส Vector เพื่อแทนเวกเตอร์สองมิติ จะเกิดอะไรขึ้นเมื่อคุณใช้ตัวดำเนินการบวก (+) เพื่อบวกพวกมัน? Python จะแจ้งข้อผิดพลาดโดยส่วนใหญ่

อย่างไรก็ตาม คุณสามารถกำหนดเมธอด __add__ ในคลาสของคุณเพื่อดำเนินการบวกเวกเตอร์ และตัวดำเนินการบวกจะทำงานตามที่คาดหวัง:

ตัวอย่าง

#!/usr/bin/python
class Vector:
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def __str__(self):
        return 'Vector (%d, %d)' % (self.a, self.b)
    def __add__(self, other):
        return Vector(self.a + other.a, self.b + other.b)

v1 = Vector(2, 10)
v2 = Vector(5, -2)
print v1 + v2

ผลลัพธ์ (Output)

เมื่อรันโค้ดข้างต้น จะได้ผลลัพธ์ดังนี้:

Vector(7,8)