สวัสดีอีกครั้งครับ..
วันนี้ขอนำเสนอเรื่อง การโอเวอร์โหลดโอเปอร์เรเตอร์นะครับ โดยหลักการดังกล่าวนี้อยู่ในเรื่อง อ็อบเจ็คโอเีรียลเท็ด ..
การโอเวอร์โหลดโอเปอร์เรเตอร์ หมายถึง การอนุญาตให้อ็อบเจ็คที่สร้างขึ้นจากคลาสใด ๆ สามารถใช้เครื่องหมายโอเปอร์เรเตอร์พื้นฐานได้ เช่น เครื่องหมาย บวก , ลบ , คูณ , หาร และอื่น ๆ (+, - , * , /)
ภาษาไพธอนอนุญาตให้สร้างโอเปอร์เรเตอร์โอเวอร์โหลดด้วยฟังก์ชั่นต่อไปนี้
__add__(), __sub__, __mul__() , __div__() และอื่น ๆ อีกจำนวนมาก
ขอให้พิจารณาโค๊ดต่อไปนี้
>>> class CPiont:
x = y = z = 0
def __init__(self, arg1, arg2, arg3):
self.x = arg1
self.y = arg2
self.z = arg3
def __str__(self):
return '(' + str(self.x) + ',' + str(self.y) + ',' + str(self.z) + ')'
def __add__(self,obj):
return CPoint(self.x+obj.x, self.y+obj.y , self.z+obj.z)
>>> p1 = CPoint(1,2,3)
>>> p2 = CPoint(4,5,6)
>>> p3 = p1 + p2
>>> print p3
(5,7,9)
ตัวอย่างด้านบนเป็นการใช้ความรู้เรื่อง อ็อบเ้จ็คโอเรียลเท็ด และการโอเวอร์โหลดโอเปอร์เรเตอร์เข้าด้วยกัน ซึ่งโอเปอร์เรเตอร์ที่ใช้โอเวอร์โหลดคือ __str__() และ __add__() โดย __str__() จะถูกเรียกให้ทำงานเมื่อใช้คำสั่ง print ส่วน__add__() จะถูกเรียกใช้งานเมื่อใช้โอเปอร์เรเตอร์ +
และฟังก์ชั่น __init__() เป็นฟังก์ชั่น constructor ของภาษาไพธอน ตัวอย่างนี้ต้องการให้ทราบเกี่ยวกับการโอเวอร์โหลดโอเปอร์เรเตอร์ ซึ่งอนุมานว่าเพื่อน ๆ ต้องรู้จักการเขียน OOP ด้วยไพธอนมาแล้วนะครับ
และสุดท้าย เราสามารถโอเวอร์โหลดโอเปอร์เรเตอร์ได้ คือ สามารถใช้เครื่องหมายบวก กับอ็อบเจ็คของคลาส CPoint ได้ด้วยคำสั่ง p3 = p1 + p2
ฉบับนี้พอแค่นี้ก่อนนะครับ !!