پرسش

چطور دکوراتور property در پایتون کار می‌کند؟

How does the property decorator work in Python?

در پایتون، دکوراتور property دقیقا چطور کار می‌کند و چه کاربردهایی دارد؟

1403/06/03
پاسخ
رضا دولتی عاشق برنامه نویسی و هوش مصنوعی!
بیوگرافی رضا دولتی

دکوراتور property در پایتون به شما این امکان رو می‌ده که متدهای کلاس رو به عنوان ویژگی (attribute) استفاده کنید، بدون اینکه نیاز به تغییرات در نحوه‌ی دسترسی به اونها داشته باشید. این دکوراتور به شما اجازه می‌ده که روش‌های getter، setter و deleter رو برای یک ویژگی مشخص کنید.

برای استفاده از property، شما ابتدا یک متد رو تعریف می‌کنید که با نام ویژگی شما هماهنگ هست و با دکوراتور @property تزئین می‌کنید. این متد به عنوان یک getter عمل می‌کنه و وقتی شما به ویژگی دسترسی پیدا می‌کنید، این متد اجرا می‌شه.

سپس، اگر نیاز دارید که مقدار ویژگی رو تغییر بدید، باید متد دیگری با نام setter تعریف کنید و با دکوراتور @نام_ویژگی.setter تزئینش کنید. همینطور، اگر می‌خواهید ویژگی رو حذف کنید، باید متدی با دکوراتور @نام_ویژگی.deleter تعریف کنید.

یک مثال ساده برای روشن‌تر شدن قضیه:

class MyClass:
    def __init__(self, value):
        self._value = value
    @property
    def value(self):
        # Getter method
        return self._value
    @value.setter
    def value(self, new_value):
        # Setter method
        if new_value < 0:
            raise ValueError("Value must be non-negative")
        self._value = new_value
    @value.deleter
    def value(self):
        # Deleter method
        del self._value

در این مثال، ما یک ویژگی به نام value داریم که با دکوراتور property ساخته شده. متد value که با @property تزئین شده، مقدار فعلی ویژگی رو برمی‌گردونه. متد value که با @value.setter تزئین شده، اجازه می‌ده تا مقدار جدیدی برای ویژگی تعیین کنیم و مطمئن می‌شویم که مقدار جدید منفی نیست. همچنین، متد value که با @value.deleter تزئین شده، امکان حذف ویژگی رو فراهم می‌کنه.

استفاده از property به شما کمک می‌کنه که کد تمیزتر و قابل مدیریتی داشته باشید و کنترل بهتری روی دسترسی و تغییر مقادیر ویژگی‌های کلاس‌هاتون داشته باشید.

پاسخ: 1403/06/03
آخرین آپدیت: 1403/07/30