Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penghias Python: Kod Permudah

Penghias Python: Kod Permudah

Susan Sarandon
Susan Sarandonasal
2024-09-26 06:26:42735semak imbas

Python Decorators: Simplifying Code

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn