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

classmethod() ใน Python

Class method รับคลาสเองเป็นอาร์กิวเมนต์แรก ทำให้เรียกใช้เมธอดภายในคลาสได้โดยไม่ต้องสร้างอินสแตนซ์ก่อน ใช้ดีคอเรเตอร์ @classmethod ก่อนประกาศเมธอด

คุณสมบัติหลัก:

  • Class method ผูกกับคลาส ไม่ขึ้นอยู่กับการสร้างอินสแตนซ์
  • สามารถแก้ไขคลาสได้ ซึ่งจะส่งผลต่อทุกอินสแตนซ์

การใช้ classmethod

สร้างคลาส WeekDay มีเมธอด daynames เรียกใช้โดยไม่ต้องสร้างอ็อบเจกต์

โค้ดตัวอย่าง

class WeekDay:
    day_name = ['Mon','Tue','Wed','Thu','Fri']
    @classmethod
    def daynames(n):
        print('The WeekDays are', n.day_name)

WeekDay.daynames()
# หรือ
WeekDay().daynames()

ผลลัพธ์

The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']

ไม่ใช้ classmethod

เขียนฟังก์ชันทั่วไปนอกคลาสก็ได้ผลลัพธ์เหมือนกัน แสดงว่าทำไมต้องมี 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']