Access modifiers في لغة البايثون

Access modifiers في لغة Python

هل ترغب في الكشف عن أسرار وخفايا لغة البايثون؟ هل تريد أن تتعلم كيف يمكنك التحكم بمستوى وصول العناصر والمتغيرات في برامجك؟ إن Access Modifiers هي المفتاح السحري الذي يمكنك من خلاله فتح باب التحكم الكامل في تدفق البيانات والتفاعلات في لغة البايثون.

عندما تبدأ في برمجة تطبيقات البايثون، قد تحتاج إلى تحديد من يمكنه الوصول وتعديل العناصر الداخلية لكائن معين. هنا تأتي Access Modifiers في الصورة، فهي تسمح لك بتعيين قواعد وضوابط صارمة لمن يمكنه الوصول إلى العناصر المحددة ومن يمنع من ذلك.

في هذا الموضوع، سنستكشف ثلاثة أنواع رئيسية من Access Modifiers في لغة البايثون: Public و Private و Protected. سنكتشف كيف يمكنك استخدام هذه العناصر لتنظيم وتنظيم برامجك، وحماية البيانات الحساسة من الوصول الغير مرغوب فيه، وتعزيز تطبيقاتك بشكل أفضل.

استعد للغوص في عالم الحماية والتحكم، واكتشف كيف يمكن لـ Access Modifiers أن ترفع برامجك إلى مستوى جديد من الأمان والمرونة في لغة البايثون.

معدلات الوصول (Access modifiers) في لغة البايثون

في لغة البايثون، تتم إدارة معدلات الوصول (Access modifiers) باستخدام تقنية التعبير الأمامي (Front-end notation) بدلاً من استخدام تعبير الواجهة الخلفية (Back-end notation) المستخدمة في لغات برمجة أخرى مثل Java وC++.

توجد ثلاثة معدلات وصول رئيسية في لغة البايثون:

Public (العامة):

معدل الوصول العام (Public) في لغة البايثون يعني أن العنصر متاح للوصول من أي مكان في البرنامج، سواء داخل الصنف نفسه أو من خارجه. يتم تمثيل العناصر العامة بدون أي تعديلات، ويمكن الوصول إليها مباشرة.

فيما يلي مثال يوضح كيفية استخدام المعدل العام في لغة البايثون:

class MyClass:
    def __init__(self):
        self.public_variable = 5

    def public_method(self):
        print("This is a public method.")

# إنشاء كائن من الصنف MyClass
obj = MyClass()

# الوصول إلى المتغير العام public_variable وطباعته
print(obj.public_variable)  # النتيجة: 5

# استدعاء الطريقة العامة public_method
obj.public_method()  # النتيجة: This is a public method.

في المثال أعلاه، لدينا صنف يُسمى MyClass. يحتوي هذا الصنف على متغير عام بالاسم public_variable وطريقة عامة بالاسم public_method. عند إنشاء كائن من الصنف MyClass باستخدام obj = MyClass()، يصبح بإمكاننا الوصول إلى المتغير العام public_variable واستخدامه مباشرة عن طريق كائن obj، وكذلك استدعاء الطريقة العامة public_method().

باستخدام معدل الوصول العام، يمكننا الوصول إلى العناصر العامة من أي مكان في البرنامج، سواء داخل الصنف نفسه أو في حالة وجود كائنات من هذا الصنف.

Protected (المحمية):

معدل الوصول المحمي (Protected) في لغة البايثون يعني أن العنصر قابل للوصول فقط داخل الصنف نفسه أو داخل الصنفات المشتقة (التي ترث من هذا الصنف). يتم تمثيل العناصر المحمية بوضع خط الشرطة (_) قبل اسم العنصر.

فيما يلي مثال يوضح كيفية استخدام المعدل المحمي في لغة البايثون:

class MyClass:
    def __init__(self):
        self._protected_variable = 10

    def _protected_method(self):
        print("This is a protected method.")

class DerivedClass(MyClass):
    def __init__(self):
        super().__init__()

    def access_protected(self):
        # يمكن الوصول إلى المتغير المحمي _protected_variable
        print(self._protected_variable)  # النتيجة: 10
        
        # يمكن استدعاء الطريقة المحمية _protected_method
        self._protected_method()  # النتيجة: This is a protected method.

# إنشاء كائن من الصنف DerivedClass
obj = DerivedClass()

# استخدام الدالة access_protected للوصول إلى العناصر المحمية
obj.access_protected()

في المثال أعلاه، لدينا صنف يُسمى MyClass يحتوي على متغير محمي بالاسم _protected_variable وطريقة محمية بالاسم _protected_method. ثم لدينا صنف يستمد من MyClass يُسمى DerivedClass، ويحتوي على طريقة تسمى access_protected التي تستخدم للوصول إلى العناصر المحمية.

عند إنشاء كائن من الصنف DerivedClass باستخدام obj = DerivedClass()، يمكننا الوصول إلى المتغير المحمي _protected_variable واستخدامه داخل طرق الصنف DerivedClass. بالإضافة إلى ذلك، يمكن استدعاء الطريقة المحمية _protected_method() داخل الصنف DerivedClass.

ملحوظة: على الرغم من أن العناصر المحمية يمكن الوصول إليها من الصنفات المشتقة، إلا أنها لا تعتبر عامة ولا يجب الاعتماد عليها بنفس القدر الذي يتم الاعتماد فيه على العناصر العامة.

Private (الخاصة):

معدل الوصول الخاص (Private) في لغة البايثون يعني أن العنصر غير قابل للوصول من خارج الصنف نفسه. يتم تمثيل العناصر الخاصة بوضع خط الشرطة المزدوج (_) قبل اسم العنصر.

فيما يلي مثال يوضح كيفية استخدام المعدل الخاص في لغة البايثون:

class MyClass:
    def __init__(self):
        self.__private_variable = 15

    def __private_method(self):
        print("This is a private method.")

    def access_private(self):
        # يمكن الوصول إلى المتغير الخاص __private_variable
        print(self.__private_variable)  # النتيجة: 15
        
        # يمكن استدعاء الطريقة الخاصة __private_method
        self.__private_method()  # النتيجة: This is a private method.

# إنشاء كائن من الصنف MyClass
obj = MyClass()

# استخدام الدالة access_private للوصول إلى العناصر الخاصة
obj.access_private()

في المثال أعلاه، لدينا صنف يُسمى MyClass يحتوي على متغير خاص بالاسم __private_variable وطريقة خاصة بالاسم __private_method. ثم لدينا طريقة تسمى access_private تستخدم للوصول إلى العناصر الخاصة.

عند إنشاء كائن من الصنف MyClass باستخدام obj = MyClass()، لا يمكننا الوصول مباشرة إلى المتغير الخاص __private_variable أو استدعاء الطريقة الخاصة __private_method من خارج الصنف. ولكن يمكننا استخدام طريقة access_private التي تعرض العناصر الخاصة وتسمح بالوصول إليها.

من المهم ملاحظة أن استخدام الشرطة المزدوجة (_) قبل اسم العنصر ليس آلية تمنع الوصول إليه بشكل كامل، ولكنها تعد مجرد تقنية تقوم بتغيير اسم العنصر بشكل غير مباشر لتحذير المطورين من عدم الوصول إليه من خارج الصنف.

هذا والسلام عليكم ورحمة الله وبركاته…

( لا تنسا مشاركة الموضوع ليستفيد غيرك )

Exit mobile version