Menu
CoddyTech

Property Decorators

جزء من قسم البرمجة كائنية التوجه في رحلة Python على Coddy. الدرس 14 من 64.

تتيح لك مزخرفات الخصائص التحكم في كيفية الوصول إلى السمات وتعديلها، مع الحفاظ على صياغة السمات البسيطة.

إليك مثالًا على صنف يحتوي على دالة getter لخاصية:

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age
    
    @property
    def age(self):
        return self._age

استخدم الخاصية مثل سمة عادية:

person = Person("Alice", 30)
print(person.age)

الناتج:

30

لاحظ أنك تصل إلى age دون أقواس، رغم أنك في الواقع تستدعي طريقة.

أضف مُعيّنًا للتحقق من البيانات عند تعيين القيم:

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age
    
    @property
    def age(self):
        return self._age
    
    @age.setter
    def age(self, value):
        if value < 0:
            raise ValueError("Age cannot be negative")
        self._age = value

الآن يمكنك تعيين العمر مع التحقق التلقائي:

person = Person("Alice", 30)
person.age = 31     # يستخدم دالة الضبط مع التحقق من صحة القيمة
print(person.age)   # يستخدم دالة القراءة

# سيؤدي هذا إلى حدوث خطأ:
# person.age = -5   # ValueError: لا يمكن أن يكون العمر سالبًا

الناتج:

31

أنشئ خصائص محسوبة تحسب القيم:

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height
    
    @property
    def area(self):
        return self.width * self.height

rect = Rectangle(5, 3)
print(rect.area)  # يحسب 5 * 3 = 15

الناتج:

15

النقطة الأساسية: تجعل مزخرفات الخصائص الطرق تبدو كأنها سمات. استخدم @property للواصِلات و@attribute_name.setter للمُعيّنات. يتيح ذلك التحقق من صحة البيانات وحساب القيم، مع الحفاظ على صياغة بسيطة للوصول إلى السمات.

challenge icon

التحدي

متوسط

أكمل الفئة Temperature في temperature.py لتحويل درجات الحرارة بين سلسيوس وفهرنهايت. ثم استخدم هذه الفئة في driver.py لاختبار تحويل درجات الحرارة. اتبع تعليقات TODO في كلا الملفين للحصول على تعليمات خطوة بخطوة.

اطبع كل تحويل بالتنسيق [celsius]°C is [fahrenheit]°F، مع إبقاء قيمة سلسيوس كما أُعطيت تمامًا، وقيمة فهرنهايت كما يحسبها Python. لا تقرّب الأرقام ولا تنسّقها. السطران اللذان ينتجهما برنامج التشغيل هما:

25°C is 77.0°F
37.0°C is 98.6°F

جرّب بنفسك

# TODO: استورد الصنف Temperature من الوحدة temperature

# اختبر الصنف:
# TODO: أنشئ مثيلًا لدرجة حرارة مقدارها 25°C
temp = None  # استبدله بمثيل فعلي من Temperature

# TODO: اطبع قيمتَي Celsius وFahrenheit
# TODO: استخدم التنسيق: "25°C is 77.0°F" (اطبع القيمتين كما هما، دون تقريب أو تنسيق)

# TODO: اضبط درجة الحرارة على 98.6°F

# TODO: اطبع القيمتين مرة أخرى للتأكد من أن التحويل يعمل
# TODO: استخدم التنسيق نفسه كما في السابق
quiz iconاختبر نفسك

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

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم Python عبر الإنترنت