ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

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

Static Method

     Static method คือ การทำให้ฟังก์ชันสามารถเรียกใช้ได้เลย โดยข้อมูลไม่มีการเปลี่ยนแปลง สามารถใช้ function ใน class static ได้ แต่ไม่สามารถเข้าถึง instance ของคลาสนั้นได้ สำหรับบางเมธอด อาจไม่จำเป็นต้องใช้ข้อมูลแอตทริบิวต์ ที่รับเข้ามาจากทาง init แต่จะใช้ค่าที่เปลี่ยนแปลงไปตามการเรียกเมธอดแต่ละครั้ง เช่น

class calculator:
    def __init__(self):
        pass

    def add(self,a,b,):
        return a+b

    def subtract(self,a,b):
        return a-b

     จากโค้ดจะเห็นได้ว่า เมื่อเราจะบวกหรือลบเลขอะไรก็ตาม สามารถกำหนดเป็นอาร์กิวเมนต์ให้แก่เมธอดเหล่านั้นได้เลย ดังนั้นเราสามารถแก้ไขคลาสตัวอย่างให้มีลักษณะ ดังนี้

1.) ไม่จำเป็นต้องมี init เพื่อรับค่าแอตทริบิวต์

2.) ไม่จำเป็นต้องสร้างอินสแตนซ์ เพราะเรากำหนดเป็นอาร์กิวเมนต์โดยตรงอยู่แล้ว

3.) สามารถเรียกเมธอดจากชื่อคลาสได้โดยตรง

     และจากลักษณะที่ได้กล่าวมานั้น จะเป็นเมธอดอีกรูปแบบหนึ่ง ซึ่งเราเรียกมันว่า Static Method โดยจะมีข้อกำหนดหลักๆ ดังนี้

- การใช้งานจะต้องระบุคำสั่ง @staticmethod ไว้ก่อนบรรทัดที่จะสร้างเมธอด

- กำหนดเมธอดด้วย def ตามปกติ โดยในส่วนของพารามิเตอร์ ไม่ต้องมี self เพราะไม่สามารถอ้างถึง Instance Attribute ได้

- ภายในเมธอดสามารถอ้างถึง Class Attribute หรือเมธอดอื่นๆ ผ่านชื่อคลาสได้โดยตรง

- การเรียกใช้เมธอดดังกล่าว จากภายนอกคลาส ก็ให้ระบุผ่านชื่อคลาส

ตัวอย่าง

class calculator:
    pi = 3.14

    @staticmethod
    def add(a,b):
        return a+b

    @staticmethod
    def subtract(a,b):
        return a-b

    @staticmethod
    def get_pi():
        return calculator.pi  #การอ้างถึง Class Attribute

    @staticmethod
    def increment(a):
        return calculator.add(a,1) #การอ้างถึงเมธอดอื่น

#การเรียกใช้งานภายนอกคลาส ซึ่งสามารถระบุผ่านชื่อคลาสได้โดยตรง
print(calculator.add(10,20),calculator.subtract(30,25),calculator.get_pi(),calculator.increment(99),
      sep ='\n')

ผลลัพธ์

ผลลัพธ์การใช้งาน Static Method
ผลลัพธ์การใช้งาน

     จากตัวอย่างที่ออกมา เป็นเพียงแนวทางให้เราเห็นลักษณะเด่นและการใช้งานของ Static Method เท่านั้น ซึ่งไม่จำเป็นที่ภายในคลาสจะต้องมีเฉพาะ Static Method เพียงอย่างเดียว เราสามารถมี Instance Method ด้วยก็ได้ และนอกจากนั้น เราก็ยังสามารถมี init เพื่อรับข้อมูลเข้ามาใช้งานภายในคลาสสำหรับกรณีอื่นที่ไม่เกี่ยวข้องกับ Static Method ได้อีกด้วย

 

 

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

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

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

Instance Method การเรียกใช้งานเมธอดผ่านอินสแตนซ์

Instance Attribute และ Initializer เมธอดชนิดพิเศษ

การเรียกใช้ฟังก์ชันแบบ Recursion ในไพทอน ฟังชันก์ทำงานซ้ำเรียกตัวเอง

Chayapol
, Static Method การใช้งานเมธอดแบบคงที่ - by เทคนิคการเขียน Python,
0 1 0 5
กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
สอบถามวิธี render file mp4 kdenlive หน่อยครับ
โดย chakirin.bfds จ 08 มี.ค. 2021 6:06 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
6
จ 08 มี.ค. 2021 6:06 pm โดย chakirin.bfds
ขอวิธีลบหรือรีเซ็ตค่าข้อมูลในตารางหน่อยครับ
โดย chakirin.bfds จ 08 มี.ค. 2021 3:51 pm บอร์ด SQL - Database
4
19
จ 08 มี.ค. 2021 6:54 pm โดย chakirin.bfds
Q - สอบถามทำให้ mouse over ที่ไอคอนรูปวงกลม แล้วให้แสดงรูปที่เป็นข้อความขึ้น
โดย eange08 ศ 05 มี.ค. 2021 4:52 pm บอร์ด Joomla Dev
1
5
ศ 05 มี.ค. 2021 5:47 pm โดย tsukasaz
กลุ่มประเทศผู้ส่งออกข้าว
โดย jataz2 ศ 05 มี.ค. 2021 11:07 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
23
ศ 05 มี.ค. 2021 11:07 am โดย jataz2
Q - พอมี module หรือ plugin ที่เป็นพวก social อย่าง line, ig บ้างไหมค่ะ
โดย eange08 พฤ 04 มี.ค. 2021 5:21 pm บอร์ด Joomla Dev
1
7
พฤ 04 มี.ค. 2021 5:26 pm โดย tsukasaz
reboot เครื่องไม่ได้ครับ
โดย chakirin.bfds พฤ 04 มี.ค. 2021 12:25 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
48
พฤ 04 มี.ค. 2021 3:14 pm โดย chakirin.bfds
แก้ css ส่วน padding ด้วย override แล้วไม่เปลี่ยนตาม
โดย eange08 พ 03 มี.ค. 2021 4:43 pm บอร์ด Joomla Development
1
33
พ 03 มี.ค. 2021 4:47 pm โดย tsukasaz
Joomla PDPA ใช้ EB Sticky Cookie Notice โมดูล แสดงแจ้งเตือนการเก็บข้อมูล Cookie ของผู้ใช้งาน
โดย tsukasaz พ 03 มี.ค. 2021 4:39 pm บอร์ด Joomla Extension Review
0
30
พ 03 มี.ค. 2021 4:39 pm โดย tsukasaz