في لغة Python، يُعد مُزخرف @property ميزة قوية تسمح لك بإدارة سمات الكائن بمزيد من التحكم والأناقة. لفهم @property بشكل كامل، من المفيد فهم مفهوم الحروف والمحددات أولاً. ستشرح مشاركة المدونة هذه هذه المفاهيم وكيف يمكن لـ @property تبسيط التعليمات البرمجية الخاصة بك وتحسينها.
في البرمجة الموجهة للكائنات، الحروف والمحددات هي طرق تستخدم للوصول إلى السمات الخاصة للفئة وتعديلها. فهي تساعد في فرض التغليف من خلال التحكم في كيفية الوصول إلى السمات وتحديثها.
Getter: طريقة تقوم باسترداد قيمة سمة خاصة. يتم استخدامه لتوفير الوصول للقراءة إلى السمة.
Setter: طريقة تقوم بتعيين أو تحديث قيمة سمة خاصة. يتم استخدامه لتوفير حق الوصول للكتابة إلى السمة وغالبًا ما يتضمن التحقق من الصحة.
لماذا نستخدم Getters وSetters؟
التغليف: يسمح لك بإخفاء التمثيل الداخلي للسمة وكشف ما هو ضروري فقط.
التحقق من الصحة : يمكن أن تتضمن أدوات الضبط منطق التحقق لضمان تعيين السمات على قيم صالحة.
سهولة القراءة : يمكنهم جعل التعليمات البرمجية أكثر قابلية للقراءة من خلال توفير واجهة واضحة للوصول إلى السمات وتعديلها.
يسمح لك مصمم @property في Python بتحديد الأساليب التي يمكن الوصول إليها مثل السمات. وهذا يجعل التعليمات البرمجية الخاصة بك أكثر وضوحًا وبديهية، حيث يمكنك إدارة السمات من خلال استدعاءات الأساليب التي تبدو وكأنها وصول إلى السمات.
إليك كيفية استخدام @property:
تحديد Getter : استخدم @property لإنشاء طريقة تسترد قيمة السمة.
تحديد أداة ضبط: استخدم @
تحديد أداة الحذف: استخدم @
لنقم بإنشاء دائرة صفية تستخدم @property لإدارة نصف قطر الدائرة:
class Circle: def __init__(self, radius): self._radius = radius @property def radius(self): """Getter method for the radius property.""" return self._radius @radius.setter def radius(self, value): """Setter method for the radius property.""" if valueالاستخدام:
c = Circle(5) print(c.radius) # 5 c.radius = 10 # Set new value print(c.radius) # 10 del c.radius # Delete the propertyفي هذا المثال:
يُعرّف مصمم الديكورproperty طريقة نصف القطر على أنها getter.
يحدد مصمم الديكور @radius.setter طريقة ضبط للسماح بتعيين قيمة نصف القطر.
يحدد مصمم الديكور @radius.deleter طريقة حذف لحذف سمة نصف القطر.
التحقق من الصحة : استخدم أدوات الضبط للتحقق من صحة البيانات قبل تعيينها. على سبيل المثال، التأكد من أن نصف القطر موجب.
الخصائص المحسوبة : استخدم الحروف لإرجاع القيم المحسوبة بناءً على سمات أخرى. على سبيل المثال، حساب مساحة الدائرة.
التغليف : إخفاء التمثيل الداخلي للسمة أثناء كشف واجهة نظيفة.
class Rectangle: def __init__(self, width, height): self._width = width self._height = height @property def area(self): """Compute the area of the rectangle.""" return self._width * self._height
الاستخدام:
rect = Rectangle(10, 5) print(rect.area) # 50
في هذا المثال، المساحة هي خاصية محسوبة تُرجع حاصل ضرب العرض والارتفاع.
س: ما هو الغرض من @property Decorator في بايثون؟ ج: يسمح مصمم @property بالوصول إلى الطريقة كسمة. فهو يوفر طريقة لتحديد أساليب getter وsetter وdeleter لإدارة الوصول إلى إحدى السمات.
س: هل يمكنك استخدام أسماء مختلفة لطرق getter وsetter وdeleter؟ ج: لا، أسماء طرق getter وsetter وdeleter يجب أن تكون هي نفسها. وذلك لأنها جميعها تهدف إلى إدارة نفس العقار.
س: ماذا يحدث إذا قمت فقط بتعريف طريقة getter باستخدام @property وليس أداة ضبط أو حذف؟ ج: إذا قمت بتعريف طريقة getter فقط، فستكون الخاصية للقراءة فقط. لن تتمكن من تعيين أو حذف قيمة تلك الخاصية.
س: كيف يؤدي استخدام @property إلى تحسين إمكانية قراءة التعليمات البرمجية؟ ج: يعمل على تحسين إمكانية القراءة من خلال السماح بالوصول إلى الأساليب مثل السمات، مما يجعل التعليمات البرمجية أكثر وضوحًا وأكثر سهولة.
س: لماذا من المهم استخدام نفس الاسم لطرق الخاصية والضبط والحذف؟ ج: استخدام نفس الاسم يضمن أن جميع الطرق المرتبطة بنفس الخاصية. يتيح لك ذلك إدارة الوصول إلى العقار بشكل متسق.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3