Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

المزخرف Property

جزء من قسم Object Oriented Programming في رحلة Python على Coddy — الدرس 10 من 64.

يسمح لك المزخرف @property بالوصول إلى الأساليب مثل السمات، مما يوفر طريقة نظيفة لجلب القيم وتعيينها.

إليك مثال على فئة (class) تستخدم @property:

class Circle:
    def __init__(self, radius):
        self._radius = radius
    
    @property
    def radius(self):
        return self._radius
    
    @property
    def area(self):
        return 3.14159 * self._radius ** 2

أنشئ دائرة وقم بالوصول إلى الخصائص:

my_circle = Circle(5)

الوصول إلى الخصائص مثل السمات العادية:

print(my_circle.radius)
print(my_circle.area)

المخرجات:

5
78.53975

لاحظ أنك لا تستخدم الأقواس () عند الوصول إلى الخصائص - فهي تبدو مثل السمات ولكنها تقوم بتشغيل كود الدوال (methods).

أضف دالة تعيين (setter) للسماح بتغيير القيم:

class Circle:
    def __init__(self, radius):
        self._radius = radius
    
    @property
    def radius(self):
        return self._radius
    
    @radius.setter
    def radius(self, value):
        if value > 0:
            self._radius = value
        else:
            print("Radius must be positive!")

الآن يمكنك تعيين نصف القطر كخاصية:

my_circle = Circle(5)
my_circle.radius = 10  # يستخدم الـ setter
print(my_circle.radius)  # يستخدم الـ getter

الناتج:

10

نقطة رئيسية: @property تجعل الدوال تبدو كسمات، بينما @property_name.setter تتيح لك التحكم في كيفية تعيين القيم.

ورقة مرجعية

يسمح لك المزخرف @property بالوصول إلى الدوال كأنها سمات (attributes)، مما يوفر طريقة نظيفة للحصول على القيم وتعيينها.

الاستخدام الأساسي للخاصية (property):

class Circle:
    def __init__(self, radius):
        self._radius = radius
    
    @property
    def radius(self):
        return self._radius
    
    @property
    def area(self):
        return 3.14159 * self._radius ** 2

الوصول إلى الخصائص بدون أقواس:

my_circle = Circle(5)
print(my_circle.radius)  # 5
print(my_circle.area)    # 78.53975

إضافة مُعيّن (setter) للتحكم في تعيين القيم:

@radius.setter
def radius(self, value):
    if value > 0:
        self._radius = value
    else:
        print("Radius must be positive!")

تعيين القيم مثل السمات:

my_circle.radius = 10  # يستخدم الـ setter
print(my_circle.radius)  # يستخدم الـ getter

جرّب بنفسك

لا يتضمّن هذا الدرس تحدّيًا برمجيًا.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming