سطح دسترسی

سطح دسترسی مشخص می‌کند که توابع یا فیلدهای یک کلاس در چه جای برنامه قابل دسترسی هستند. در این درس می‌خواهیم به سطح دسترسی خصوصی (private) و عمومی(public) نگاهی بیندازیم. سطح دسترسی public زمانی مورد استفاده قرار می‌گیرد که شما بخواهید به یک تابع یا فیلد در خارج از کلاس دسترسی یابید. به عنوان مثال به کد زیر توجه کنید :

 1: class Test:
 2:     number = 10;
 3: 
 4: x = Test();
 5: print(x.number);
10

در این مثال در کلاس Test، یک فیلد به صورت public تعریف کرده ایم(خط 2). با تعریف این عضو به صورت public می‌توانیم آن را در خارج از کلاس Test چاپ یا مقدار دهی کنیم (خطوط 5). حال اگر نخواهیم که به یک فیلد یا تابع در خارج از کلاس دسترسی داشته باشیم باید آن را به صورت خصوصی یا (private) تعریف کنیم. برای این کار کافیست که قبل از نام تابع یا فیلد دو علامت زیر خط یا underscore بگذاریم :

 1: class Test:
 2:     __number = 10;
 3: 
 4: x = Test();
 5: print(x.__number);
AttributeError: 'Test' object has no attribute '__number'

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

class Test:
    def __ShowMessage():
        print("Hello World!");

x = Test();
x.__ShowMessage();

با اجرای برنامه بالا چون تابع به صورت خصوصی تعریف شده است، با خطا مواجه می شویم.