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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ช่วยด้วยครับ ใส่path ให้ preg_split ทำไงดี...
โดย smile อ 11 ต.ค. 2009 7:24 am บอร์ด Programming - PHP
0
951
อ 11 ต.ค. 2009 7:24 am โดย smile View Topic ช่วยด้วยครับ ใส่path ให้ preg_split ทำไงดี...
ผมอัฟjoomlaเสร็จแล้วแต่insto แล้วทำฐานข้อมูล ที่ว่า ชื่อฐานข
โดย narupot ศ 09 ต.ค. 2009 8:52 pm บอร์ด สอบถามปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
1
719
ศ 09 ต.ค. 2009 11:12 pm โดย mindphp View Topic ผมอัฟjoomlaเสร็จแล้วแต่insto แล้วทำฐานข้อมูล ที่ว่า ชื่อฐานข
การแบ่งหน้า php ที่เป็น Thumbnails (columns และ row ) ครับ
โดย teekaiman พฤ 08 ต.ค. 2009 10:15 am บอร์ด Programming - PHP
4
2634
ศ 09 ต.ค. 2009 3:22 pm โดย teekaiman View Topic การแบ่งหน้า php ที่เป็น Thumbnails (columns  และ  row ) ครับ
รบกวนขอจาวาสคริปต์ textbox รับค่าภาษาอังกฤษกับตัวเลขทีจ้า
โดย SG14 พฤ 08 ต.ค. 2009 7:26 pm บอร์ด JavaScript & jQuery Ajax & Node.JS
1
2654
ศ 09 ต.ค. 2009 11:46 am โดย mindphp View Topic รบกวนขอจาวาสคริปต์  textbox รับค่าภาษาอังกฤษกับตัวเลขทีจ้า
ทำไมผมเช็คพาสเวิรดตอนสมัครไม่ได้อ่าครับ
โดย iamaj พฤ 08 ต.ค. 2009 9:06 pm บอร์ด JavaScript & jQuery Ajax & Node.JS
1
1728
ศ 09 ต.ค. 2009 11:44 am โดย mindphp View Topic ทำไมผมเช็คพาสเวิรดตอนสมัครไม่ได้อ่าครับ
Warning: mysql_num_rows(): supplied argument is not a valid
โดย Anonymous พฤ 08 ต.ค. 2009 6:20 pm บอร์ด Programming - PHP
2
1330
ศ 09 ต.ค. 2009 11:41 am โดย mindphp View Topic Warning: mysql_num_rows(): supplied argument is not a valid
วิธีการ uninstall Antivir PersonalEdition Classic (ลองทำแบบเ
โดย jubjangjj พ 07 ต.ค. 2009 9:52 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
1881
พ 07 ต.ค. 2009 9:52 pm โดย jubjangjj View Topic วิธีการ uninstall Antivir PersonalEdition Classic (ลองทำแบบเ
Question (html) ใน tag <img> สามารถส่งข้อความไปให้ textbox ไ
โดย mekhong พ 07 ต.ค. 2009 8:54 pm บอร์ด HTML CSS
7
5405
พฤ 15 ต.ค. 2009 8:57 am โดย mekhong View Topic Question (html) ใน tag <img> สามารถส่งข้อความไปให้ textbox ไ