วิธีการเรียนรับคลาสเองเป็นอาร์กิวเมนต์แรก วิธีนี้ทำให้เราสามารถเรียกใช้เมธอดภายในคลาสโดยไม่ต้องสร้างอินสแตนซ์จากคลาสก่อน เราแค่ใช้มัณฑนากร @classmethod ก่อนการประกาศเมธอดที่มีอยู่ในคลาส จากนั้นเราสามารถเข้าถึงเมธอดได้โดยตรง ด้านล่างนี้คือคุณสมบัติหลักของ classmethids
-
classmethod ถูกผูกไว้กับคลาสและไม่ได้ขึ้นอยู่กับการสร้างอินสแตนซ์ของคลาสที่จะใช้
-
classmethod สามารถแก้ไขคลาสซึ่งจะเผยแพร่ไปยังอินสแตนซ์ทั้งหมดของคลาส
การใช้ classmethod
ในตัวอย่างด้านล่าง เราสร้างคลาสชื่อ WeekDay และสร้างวิธีการที่เรียกว่า daynames จากนั้นเราเข้าถึงวิธีนี้โดยไม่ต้องสร้างอินสแตนซ์ของคลาสก่อน ซึ่งหมายความว่าโดยไม่ต้องสร้างวัตถุใด ๆ จากคลาส
ตัวอย่าง
class WeekDay: day_name = ['Mon','Tue','Wed','Thu','Fri'] # Applying the class method @classmethod def daynames(n): print('The WeekDays are', n.day_name) WeekDay.daynames() # OR WeekDay().daynames()
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
โดยไม่ต้องใช้ classmethod
เพื่อให้ได้ผลลัพธ์เดียวกันโดยไม่มีคลาสเมธอด เราสามารถประกาศเมธอดโดยไม่มีคลาสได้ นี่แสดงให้เห็นเหตุผลที่เราต้องการวิธีการเรียน
ตัวอย่าง
def daynames(): day_name = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] print('The WeekDays are', day_name) daynames()
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']