با سلام خدمت تمامی دوستان عزیزم توی این مقاله قراره به بررسی یکی دیگر از اصول مهم و کاربردی شی گرایی یعنی کپسوله سازی در پایتون بپردازیم .
اگر هنوز با مفهوم شی گرایی در پایتون آشنا نیستین از اوجب واجباته که قبل از ادامه ی مطالعه ی این مقاله به مطالعه ی مقاله ی شی گرایی در پایتون بپردازین .
همچنین اگر مایلید با یکی دیگر از اصول مهم شی گرایی در پایتون آشنا بشین می تونین به مقاله ی قبلی یعنی ارث بری در پایتون سر بزنین .
بریم بررسی کنیم که کپسوله سازی در پایتون چیه و چه کاربردی داره .
مفهوم کپسوله سازی در پایتون
برای درک بهتر مفهوم کپسوله سازی در پایتون در دنیای واقعی مثالی می زنم که در ک این مفهوم راحت تر بشه . فرض کنید در یک دانشگاه که شامل بخش های مختلفی نظیر بخش مالی ، آموزش ، حراست و … است ؛ فرض کنید شرایطی پیش آمده که یکی از اعضای بخش آموزش ما تمامی سوابق مالی یکی از دانشجویان را نیاز دارد .
در ابتدا این شخص اجازه ندارد که به صورت مستقیم به اطلاعات مربوط به سوابق مالی دانشجو دسترسی داشته باشد . کاری که او باید انجام دهد این است که با شخص دیگری که در بخش مالی فعالیت می کند تماس بگیرد و از او بخواهد که اطلاعات مورد نیاز را به او ارائه دهد .
در این مثال داده های مربوط به بخش مالی و کارمندانی که این توانایی را دارند که داده های مربوط به این بخش را تغییر دهند ، بخش مالی می نامیم .
کپسوله سازی در پایتون نیز به همین صورت است و سبب پنهان سازی داده ها می شود . (داده ها را درون کپسولی می ریزیم که محتویات آن از دید بقیه ی افراد پنهان شود .)
در این مثال هم داده های بخش مختلف (مالی ، آموزش ، حراست و … ) از دید بخش های دیگر پنهان شده است .
نحوه ی پیاده سازی کپسوله سازی در پایتون
خب حالا که با مفهوم کپسوله سازی در پایتون آشنا شدیم بریم با هم نحوه ی پیاده سازی آن را مورد بررسی قرار دهیم و فرض کنید کلاسی به نام Student داریم که متد __init__ آن علاوه بر self دارای مولفه ی ورودی grade می باشد و از این کلاس یک شی می سازیم .
اگر از کپسوله سازی استفاده نکنیم به راحتی می توانیم ویژگی های این کلاس را تغییر دهیم . برای مثال برای تغییر دادن نمره ی دانشجو کافی است grade شی ای که از کلاس ساختیم را به عدد دیگری تغییر دهیم . مانند تصویر زیر :
در شی گرایی اگر بخواهیم کلاسی را کپسوله کنیم تا بتوان متغیرهای کلاس را تغییر داد ، کافی است پشت متغیر مورد نظر ۲ تا underscore (__) قرار دهیم . با انجام این کار اگر از کلاس مورد نظر خود شی ای بسازیم و بخواهیم ویژگی نمونه ای که ساختیم را تغییر دهیم به این دلیل که در کلاس خود از کپسوله سازی استفاده کرده ایم برنامه ی ما با خطا مواجه شده و به ما Attribute Error می دهد . ( مفسر به ما می گوید که این همپین ویژگی ای وجود ندارد . )
حالا که به لطف کپسوله سازی در پایتون نمی توان از بیرون از کلاس که کپسوله سازی شده ویژگی هایش را عوض کرد ، چگونه می توان یم در صورت لزوم ویژگی های کلاس مورد نظر را تغییر دهیم .
برای تغییر ویژگی های کلاسی که کپسوله شده باید از داخل کلاس ویژگی ها را تغییر دادد که برای انجام این کار کافی است دو متد set ( برای ست کردن متغیر جدید )
و get ( برای چاپ کردن آن ) بسازیم .
مثال زیر به صورت کامل نحوه ی کپسوله سازی در پایتون و استفاده از متد های set و get را نشان می دهد .
خب این مقاله هم اینجا به پایان می رسه . ممنونم که تا انتهای مقاله من رو همراهی کردین . امیدوارم بعد از مطالعه ی این مقاله به راحتی بتونین از مفهوم کپسوله سازی در پایتون استفاده کنید . برای مطالعه ی بیشتر در رابطه با کپسوله سازی در پایتون به اینجا سر بزنین .
تا مقاله ی بعدی خداوند یار و نگهدارتون .