کپسوله سازی در پایتون و درک اصولی آن


کپسوله سازی در پایتون و درک اصولی آن
براي خريد اين درس نياز است وارد سايت شويد. در صورت نداشتن حساب کاربري عضو شويد.

کپسوله سازی در پایتون

در این جلسه از آموزش پایتون، کپسوله سازی در پایتون را به صورت کاملا آسان و کاربردی یاد خواهید گرفت و می توانید بارها و بارها از این مزیت خاص در پروژه های خود استفاده کنید.

کپسوله سازی در پایتون، یکی از مفاهیم اساسی در برنامه نویسی شی گرا (oop) است. کپسوله سازی در پایتون، ایده بسته بندی داده ها و روش هایی که روی داده ها در یک واحد کار می کنند را توضیح می دهد. این امر محدودیت هایی را برای دسترسی مستقیم به متغیر ها و روش ها ایجاد می کند و می تواند از تغییر تصادفی داده ها جلوگیری کند.
برای جلوگیری از تغییر تصادفی، متغیر یک شی فقط با متد یک شی قابل تغییر است. این نوع متغیر ها به عنوان متغیر خصوصی شناخته می شوند.
یک کلاس نمونه ای از کپسوله سازی در پایتون است. زیرا تمام داده هایی که توابع عضو، متغیر ها و ... را کپسوله می کند.

کپسوله سازی در دنیای واقعی

می خواهیم یک مثال واقعی از کپسوله سازی در واقعیت را برایتان توضیح دهیم. در یک شرکت، بخش های مختلفی مانند بخش حسابداری، بخش مالی، بخش فروش و غیره وجود دارد.
به طور مشابه، بخش فروش تمام فعالیت های مربوط به فروش را مدیریت می کند و سوابق همه فروش ها را نگهداری می کند. اکنون ممکن است شرایطی پیش بیاید که یکی از اعضای بخش مالی به تمام داده های مربوط به فروش در یک ماه خاص نیاز داشته باشد.
در ابتدا این شخص اجازه دسترسی مستقیم به داده های مربوط به فروش را ندارد. او ابتدا باید با یک شخص دیگری در قسمت فروش تماس بگیرد و سپس از او بخواهد که داده های خاص را ارائه دهد. این همان کپسوله سازی در پایتون است.
در اینجا داده های بخش فروش و کارمندانی که می توانند آن ها دستکاری کنند را تحت یک نام واحد با عنوان "بخش فروش" قرار می گیرند.
کپسوله سازی در پایتون، موجب پنهان سازی داده ها می شود. در این مثال نیز داده های بخش هایی مانند فروش، امور مالی و یا حسابداری از بخش های دیگر پنهان می شوند.

اعضای محافظت شده

اعضای محافظت شده در زبان هایی مثل java و C++، آن دسته از اعضای کلاس هستند که خارج از کلاس قابل دسترسی نیستند اما می توان از داخل کلاس و زیر کلاس های آن به این اعضای محافظت شده دسترسی داشت.
برای انجام این کار در پایتون، فقط با قرار دادن پیشوند نام عضو توسط یک زیر خط "_"، این قرارداد را دنبال کنید.
اگر چه اعضای محافظت شده می توانند خارج از کلاس و همچنین در کلاس مشتق شده قابل دسترسی باشد اما به طور معمول به بدنه کلاس محافظت شده دسترسی نداشته باشید.
نکته: متد __init__ یک سازنده است و به محض این که یک شی از یک کلاس نمونه سازی شود، اجرا می شود.  

به مثال زیر توجه کنید:

# Python program to
# demonstrate protected members
 
# Creating a base class
class Base:
    def __init__(self):
 
        # Protected member
        self._a = 2
 
# Creating a derived class
class Derived(Base):
    def __init__(self):

  # Calling constructor of
        # Base class
        Base.__init__(self)
        print("Calling protected member of base class: ",
              self._a)
 
        # Modify the protected variable:
        self._a = 3
        print("Calling modified protected member outside class: ",
              self._a)
 
 
obj1 = Derived()
 
obj2 = Base()
 
# Calling protected member
# Can be accessed but should not be done due to convention
print("Accessing protected member of obj1: ", obj1._a)
 
# Accessing the protected variable outside
print("Accessing protected member of obj2: ", obj2._a)

خروجی این قطعه کد به صورت زیر می باشد:

Calling protected member of base class:  2
Calling modified protected member outside class:  3
Accessing protected member of obj1:  3
Accessing protected member of obj2:  2

اعضای خصوصی

اعضای خصوصی شبیه اعضای محافظت شده هستند. تفاوت این دو در این است که اعضای کلاس خصوصی اعلام شده نباید خارج از کلاس یا هیچ کلاس پایه ای، قابل دسترسی باشند.
در پایتون، هیچ متغیر نمونه خصوصی وجود ندارد که جز در داخل یک کلاس قابل دسترسی نباشد.
با این حال، برای تعریف یک عضو خصوصی، نام عضو را با دو زیر خط "__" نشان می دهند.
توجه: اعضای خصوصی و محافظت شده پایتون را می توان در خارج از کلاس و از طریق انحراف نام پایتون دسترسی داشت.

در مثال زیر، اعضای خصوصی در پایتون را نشان داده ایم:

# Python program to
# demonstrate private members
 
# Creating a Base class
 
 
class Base:
    def __init__(self):
        self.a = "Darsman"
        self.__c = "Darsman"
 
# Creating a derived class
class Derived(Base):
    def __init__(self):
 
        # Calling constructor of
        # Base class
        Base.__init__(self)
        print("Calling private member of base class: ")
        print(self.__c)
 
 
# Driver code
obj1 = Base()
print(obj1.a)
 
# Uncommenting print(obj1.c) will
# raise an AttributeError
 
# Uncommenting obj2 = Derived() will
# also raise an AtrributeError as
# private member of base class
# is called inside derived class

خروجی های این دستور به صورت زیر می باشد:

Darsman
Traceback (most recent call last):
  File "/home/f4905b43bfcf29567e360c709d3c52bd.py", line 25, in <module>
    print(obj1.c)
AttributeError: 'Base' object has no attribute 'c'

Traceback (most recent call last):
  File "/home/4d97a4efe3ea68e55f48f1e7c7ed39cf.py", line 27, in <module>
    obj2 = Derived()
  File "/home/4d97a4efe3ea68e55f48f1e7c7ed39cf.py", line 20, in __init__
    print(self.__c)
AttributeError: 'Derived' object has no attribute '_Derived__c'

 

در این درس به موضوع بسیار مهم کپسوله سازی در پایتون پرداختیم. آموختیم کپسوله سازی در پایتون چیست، چگونه و در کجا استفاده می شود. همچنین، اعضای خصوصی و اعضای محافظت شده را شناختیم.


امیدواریم این درس برای شما مفید واقع شود و از آن استفاده کنید. اگر خواستید کپسوله سازی در پایتون را به طور کامل یاد بگیرید، توصیه می کنیم حتما فیلم تدریس را ببینید.
در جلسه بعد مبحث وراثت در پایتون را به صورت جامع آموزش می دهیم.

 

نظرات
کاربر درسمن
رفیعی

perfect thanks

کاربر درسمن
رفیعی

perfect thanks

پشتیبانی 1
پشتیبانی 1

خیلی ممنون از شما.


نظر بدهید نظر شما در تصمیم دیگران اثرگذار است. لطفا برای ما و همراهان درسمن نظر خود را بنویسید.
برای ارسال نظر نیاز است وارد سایت شوید. در صورت نداشتن حساب کاربری عضو شوید.


مشخصات دوره


مدرس دوره : مهدی عباسی
تعداد جلسات : جلسه
مدت زمان : 892 دقیقه
حجم دوره : 2/60 گیگابایت
سطح مهارت : مقدماتی تا متوسط
وضعیت دوره : پایان یافته
تعداد دانشجویان : 8088
: میانگین امتیاز
برای دسترسی به این دوره وارد یا عضو شوید.
مهدی عباسی

مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و ....