Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

classmethod() ใน Python


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