Penghias dalam Python ialah alat berkuasa yang membolehkan anda mengubah suai gelagat fungsi atau kaedah tanpa menukar kod sumbernya. Ia menyediakan cara yang bersih untuk menambah kefungsian dan digunakan secara meluas untuk pengelogan, menguatkuasakan peraturan dan mengoptimumkan prestasi.
Dalam siaran ini, kita akan melihat enam penghias Python biasa dengan contoh mudah.
1 - @staticmethod: Tentukan Kaedah Statik
Penghias @staticmethod mencipta kaedah yang tidak mengakses data contoh (diri) atau kelas (cls). Ia berkelakuan seperti fungsi biasa tetapi boleh dipanggil dari kelas atau contoh.
Contoh:
class MyClass: @staticmethod def greet(): return "Hello from static method!"
2 - @classmethod: Tentukan Kaedah Kelas
Penghias @classmethod membolehkan anda menentukan kaedah yang mengambil kelas (cls) sebagai hujah pertama. Ini berguna untuk kaedah kilang atau mengubah keadaan kelas.
Contoh:
class MyClass: count = 0 @classmethod def increment_count(cls): cls.count += 1
3 - @property: Tentukan Atribut Baca Sahaja
Penghias @property membenarkan kaedah untuk diakses seperti atribut. Ia berguna apabila anda ingin mengawal akses kepada harta benda tanpa mendedahkan pelaksanaan dalaman.
Contoh:
class Circle: def __init__(self, radius): self._radius = radius @property def area(self): return 3.14 * self._radius ** 2
4 - @functools.lru_cache: Cache Hasil Fungsi Mahal
Penghias @lru_cache (dari functools) menyimpan cache hasil panggilan fungsi untuk mengelakkan pengiraan semula. Ini boleh meningkatkan prestasi dengan ketara untuk fungsi yang mahal atau yang sering dipanggil.
Contoh:
from functools import lru_cache @lru_cache(maxsize=32) def expensive_computation(x): return x ** 2
5 - @functools.wraps: Kekalkan Metadata dalam Penghias Tersuai
Apabila menulis penghias tersuai, penghias @wraps mengekalkan metadata (nama, docstring) fungsi asal, memastikan alat introspeksi masih berfungsi.
Contoh:
from functools import wraps def my_decorator(func): @wraps(func) def wrapper(*args, **kwargs): return func(*args, **kwargs) return wrapper
6 - @dataclass: Ringkaskan Takrif Kelas
Penghias @dataclass (daripada modul dataclasses) secara automatik menjana kaedah seperti init() dan repr() untuk kelas. Ia sesuai untuk kelas memegang data.
Contoh:
from dataclasses import dataclass @dataclass class Point: x: int y: int
Kesimpulan
Penghias Python seperti @staticmethod, @classmethod, @property, @lru_cache, @wraps dan @dataclass membantu menulis kod yang lebih bersih dan cekap dengan membungkus kefungsian pada kaedah dan fungsi. Ia adalah alat serba boleh yang boleh memudahkan banyak tugas pengaturcaraan.
Sumber
Definisi Penghias Python
@kaedah statik
@kaedah kelas
@harta benda
@functools.lru_cache
@functools.wraps
@dataclass
Atas ialah kandungan terperinci Penghias Python: Kod Permudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!