วิธีการเรียนรับคลาสเองเป็นอาร์กิวเมนต์แรก วิธีนี้ทำให้เราสามารถเรียกใช้เมธอดภายในคลาสโดยไม่ต้องสร้างอินสแตนซ์จากคลาสก่อน เราแค่ใช้มัณฑนากร @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']