Method (เมธอด) คือ สมาชิกของคลาสอีกอย่างหนึ่งที่ใช้สำหรับกำหนดการกระทำต่างๆ โดยการสร้างเมธอดจะใช้หลักการเดียวกันกับฟังก์ชันทุกประการ จึงอาจกล่าวได้ว่า เมธอดก็คือฟังก์ชันของ Class (คลาส) นั่นเอง ซึ่งในบทความนี้เราจะมาพูดถึง การเรียกใช้งานเมธอดผ่านอินสแตนซ์ Instance Method  ในภาษาไพทอนกัน

Instance Method

     Instance Method (อินสแตนซ์เมธอด) คือ เมธอดที่ต้องเรียกใช้งานผ่านอินสแตนซ์ของคลาสนั้น ซึ่งข้อกำหนดส่วนใหญ่ก็จะเหมือนกับฟังก์ชันเกือบทั้งหมด แต่สิ่งที่แตกต่างออกไปก็คือ พารามิเตอร์ตัวแรกของเมธอดควรเป็นคำว่า self สำหรับใช้อ้างอิงถึงสมาชิก เช่น แอตทริบิวต์หรือเมธอดอื่นๆภายในคลาสนั้น และถึงแม้ในเมธอดนั้นจะไม่อ้างถึงสมาชิกตัวอื่นก็จำเป็นจะต้องมี self กำกับเอาไว้ ซึ่งเราสามารถดูเพิ่มจากลักษณะการนำไปใช้ได้จากนี้เลย 

class calculator:
    def is_number(self, x):  #จะต้องมี self เป็นพารามิเตอร์ตัวแรก
        try:
            float(x)
        except:
            return False
        else:
            return True

    def compute(self, a, b, operator):
        try:
            return eval(f'{a}{operator}{b}')
        except:
            return None

    def show_result(self, a, b, operator):
        print(f'{a}{operator}{b} = {self.compute(a, b, operator)}')

     จากโค้ดในตัวอย่างเราจะเห็นได้ว่า เมื่อเราอ้างถึงเมธอดอื่นๆ ที่อยู่ภายในคลาสจะต้องทำผ่านคำว่า self แต่ถ้าหากอ้างถึงพารามิเตอร์ที่เป็นของมันเอง ก็ระบุเพียงแค่ชื่อเช่นเดียวกับฟังก์ชัน และหากว่าเราต้องการเรียกเมธอดจากภายนอกคลาส ก็ต้องสร้างอินสแตนซ์ของคลาสเหล่านั้นขึ้นมาก่อน จากนั้นก็สามารถเรียกผ่านอินสแตนซ์ โดยไม่ต้องมี self เป็นอาร์กิวเมนต์ แต่ตัวอื่นๆ ต้องใส่ไปตามปกติ ตัวอย่างเช่น

cal = calculator()  #สร้างอินสแตนซ์ของคลาส calculator
cal.show_result(10, 20, '*') #เรียกเมธอด

x = cal.compute(1, 9, '+')
y = cal.compute(9, 1, '-')
if cal.is_number(x) and cal.is_number(y):
    cal.show_result(x, y , '*')

     จะเห็นได้ว่าเมธอดของคลาส จะต้องเรียกผ่านอินสแตนซ์ของคลาสนั้น เราจึงเรียกว่าเป็น Instance Method 

ผลลัพธ์

ผลลัพธ์การเรียกใช้เมธอดผ่านอินสแตนซ์ของคลาส
ผลลัพธ์การเรียกใช้

     จากผลลัพธ์ที่ออกมา เป็นการคำนวณตัวเลขแบบง่ายๆ แต่จะเป็นการเรียกใช้เมธอดผ่านอินสแตนซ์ของคลาสนั้นๆ เพียงเท่านี้ก็สามารถรู้วิธีในการเรียกใช้งานเมธอดผ่านอินสแตนซ์ได้แล้ว ทำให้เราสามารถกำหนดการกระทำต่างๆ ได้อย่างง่ายดาย

 

 

ช่องทางการศึกษาเพิ่มเติมเกี่ยวกับ : Python

เทคนิคการเขียนไพทอน

9 ชนิดของข้อผิดพลาดในภาษาไพทอน

ฟังก์ชันและปฏิบัติการต่างๆ เกี่ยวกับเซต ในไพทอน

ฟังก์ชันต่างๆ ของข้อมูลแบบ Dictionary ในไพทอน

ไพทอน การสร้างคลาส การเขียนโปรแกรมแบบออปเจ็ค Create Class OOP

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
SQL JOIN: การรวมข้อมูลจากหลายตารางในฐานข้อมูล
โดย witsarutt000 พฤ 14 มี.ค. 2024 4:07 pm บอร์ด SQL Knowledge
1
166
พฤ 14 มี.ค. 2024 5:44 pm โดย Sirayu View Topic SQL JOIN: การรวมข้อมูลจากหลายตารางในฐานข้อมูล
PHP การเปลี่ยนแปลงที่สร้างปรากฏการณ์ในโลกของเว็บ
โดย witsarutt000 พฤ 14 มี.ค. 2024 11:17 am บอร์ด PHP Knowledge
0
125
พฤ 14 มี.ค. 2024 11:17 am โดย witsarutt000 View Topic PHP การเปลี่ยนแปลงที่สร้างปรากฏการณ์ในโลกของเว็บ
ปัญหา Harddisk ขึ้น 100% เวลาเซฟไฟล์ หรือภาพ จะค้่างที่หน้าแท๊บ Expolorer
โดย Thanavat_n พ 13 มี.ค. 2024 11:02 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
5
270
พ 13 มี.ค. 2024 1:34 pm โดย Thanavat_n View Topic ปัญหา Harddisk ขึ้น 100% เวลาเซฟไฟล์ หรือภาพ จะค้่างที่หน้าแท๊บ Expolorer
ตู้รองเท้า ไอเท็มวิเศษช่วยจัดระเบียบคอลเลกชันรองเท้าคู่โปรด
โดย @Foretoday อ 12 มี.ค. 2024 1:46 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
184
อ 12 มี.ค. 2024 1:46 pm โดย @Foretoday View Topic ตู้รองเท้า ไอเท็มวิเศษช่วยจัดระเบียบคอลเลกชันรองเท้าคู่โปรด
แนะนำสถานที่น่าเที่ยวในจังหวัดชุมพรพร้อมวิธีการเดินทาง
โดย witsarutt000 จ 11 มี.ค. 2024 6:14 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
142
จ 11 มี.ค. 2024 6:14 pm โดย witsarutt000 View Topic แนะนำสถานที่น่าเที่ยวในจังหวัดชุมพรพร้อมวิธีการเดินทาง
ย้าย VM ข้าม Host ด้วย scp กรณีศึกษา Vmware ESXI
โดย mindphp อ 10 มี.ค. 2024 4:36 am บอร์ด Linux - Web Server
0
239
อ 10 มี.ค. 2024 4:36 am โดย mindphp View Topic ย้าย VM ข้าม Host ด้วย scp กรณีศึกษา Vmware ESXI
IP และ vpn (VMware)
โดย ballmykids อ 10 มี.ค. 2024 2:35 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
203
จ 11 มี.ค. 2024 3:19 pm โดย ballmykids View Topic IP และ vpn (VMware)
แบบนี้ต้องทำยังไง ในกรณีที่ Server เดิมเราได้ทำการ Raid 1 กับ HDD 2 ลูกแรกแล้ว
โดย Anonymous ศ 08 มี.ค. 2024 7:02 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
166
ศ 08 มี.ค. 2024 8:12 pm โดย mindphp View Topic แบบนี้ต้องทำยังไง ในกรณีที่ Server เดิมเราได้ทำการ Raid 1 กับ HDD 2 ลูกแรกแล้ว