Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah Perbezaan Antara `@classmethod` dan `@staticmethod` dalam Python?
Maksud dan Penggunaan @classmethod dan @staticmethod untuk Pemula
Dalam Python, @classmethod dan @staticmethod ialah penghias yang digunakan untuk menentukan kaedah dengan khusus ciri-ciri.
@classmethod
Kaedah kelas ialah kaedah yang terikat kepada kelas, bukan kepada tika individu kelas. Ia mesti mempunyai kelas sebagai hujah pertamanya, yang biasanya dinamakan cls. Mengikut konvensyen, kaedah kelas dinamakan dengan awalan from_ atau create_.
Bila menggunakan @classmethod:
Contoh:
class Date: def __init__(self, day, month, year): self.day = day self.month = month self.year = year @classmethod def from_string(cls, date_as_string): day, month, year = map(int, date_as_string.split('-')) return cls(day, month, year)
@staticmethod
Kaedah statik ialah kaedah yang tidak terikat kepada sama ada kelas atau contoh. Ia tidak mempunyai akses kepada sebarang contoh atau pembolehubah kelas. Kaedah statik biasanya digunakan untuk fungsi utiliti yang boleh digunakan semula tanpa pengubahsuaian.
Bila menggunakan @staticmethod:
Contoh:
class Date: @staticmethod def is_date_valid(date_as_string): day, month, year = map(int, date_as_string.split('-')) return day <= 31 and month <= 12 and year <= 3999
Perbezaan antara @classmethod dan @staticmethod
Feature | @classmethod | @staticmethod |
---|---|---|
Access to class | Has access to the class | No access to the class |
Access to instance | No access to instances | No access to instances |
Usage | Factory methods, operations on the class | Utility functions, independent of class or instances |
Atas ialah kandungan terperinci Apakah Perbezaan Antara `@classmethod` dan `@staticmethod` dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!