المزخرف 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جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Object Oriented Programming
1أساسيات OOP
الملفات الخارجيةمقدمة في OOPClasses مقابل Objectsمعامل selfMethodsAttributesدالة البناء (__init__)مراجعة - آلة حاسبة بسيطة4الوراثة
الوراثة الأساسيةدالة ()superإعادة تعريف الدوال (Method Overriding)الوراثة المتعددةترتيب استدعاء الدوال (Method Resolution Order)مراجعة - هيكلية الموظفين5تعدد الأشكال
مراجعة إعادة تعريف الدوالمفهوم Duck Typingالأصناف والدوال المجردةتصميم الواجهاتملخص - حاسبة الأشكال