ডেটা এনক্যাপসুলেশনের উদ্দেশ্যে, বেশিরভাগ অবজেক্ট ওরিয়েন্টেড ভাষা গেটার এবং সেটার্স পদ্ধতি ব্যবহার করে। এর কারণ হল আমরা অন্য ক্লাস থেকে একটি অবজেক্ট ক্লাসের অ্যাট্রিবিউট লুকিয়ে রাখতে চাই যাতে অন্য ক্লাসের পদ্ধতিতে ডেটার কোনো আকস্মিক পরিবর্তন না হয়।
নাম অনুসারে, গেটার হল এমন একটি পদ্ধতি যা ব্যক্তিগত বৈশিষ্ট্যগুলি অ্যাক্সেস করতে বা ব্যক্তিগত বৈশিষ্ট্যগুলির মান পেতে সহায়তা করে এবং সেটার হল এমন পদ্ধতি যা ব্যক্তিগত বৈশিষ্ট্যগুলির মান পরিবর্তন বা সেট করতে সহায়তা করে৷
ব্যক্তিগত বৈশিষ্ট্য অ্যাক্সেস করা
নীচে আমরা একটি ক্লাস তৈরি করার জন্য কোড লিখি, এটি শুরু করি এবং কোনো অতিরিক্ত পদ্ধতি তৈরি না করে এটির ভেরিয়েবল অ্যাক্সেস করি।
উদাহরণ
class year_graduated: def __init__(self, year=0): self._year = year # Instantiating the class grad_obj = year_graduated() #Printing the object print(grad_obj) #Printing the object attribute print(grad_obj.year)
আউটপুট
উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -
<__main__.year_graduated object at 0x00F2DD50> 0
প্রথম প্রিন্ট স্টেটমেন্ট আমাদের তৈরি করা বস্তুর বিশদ বিবরণ দেয়, দ্বিতীয় প্রিন্ট অবজেক্ট আমাদের ব্যক্তিগত বৈশিষ্ট্যের ডিফল্ট মান দেয়।
গেটার এবং সেটার্স ব্যবহার করা
নীচের উদাহরণগুলিতে আমরা একটি ক্লাস করব, শুরু করব এবং তারপর প্রতিটিতে একটি গেটার এবং সেটার পদ্ধতি যুক্ত করব। তারপর ক্লাস ইনস্ট্যান্টিয়েট করে এবং এই গেটার এবং সেটার পদ্ধতি ব্যবহার করে এই পদ্ধতিতে ভেরিয়েবলগুলি অ্যাক্সেস করুন। তাই আপনি সেটার পদ্ধতিতে আপনার যুক্তি লুকিয়ে রাখতে পারেন।
উদাহরণ
class year_graduated: def __init__(self, year=0): self._year = year # getter method def get_year(self): return self._year # setter method def set_year(self, a): self._year = a grad_obj = year_graduated() # Before using setter print(grad_obj.get_year()) # After using setter grad_obj.set_year(2019) print(grad_obj._year)
আউটপুট
উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয়:
0 2019
অ্যাট্রিবিউটগুলিকে ব্যক্তিগত করা
পরবর্তী উদাহরণে আমরা দেখব কিভাবে পদ্ধতিগুলিকে ব্যক্তিগত করা যায় যাতে এটির ভেরিয়েবলগুলি বহিরাগত কলিং ফাংশন দ্বারা ম্যানিপুলেট করা না যায়। এগুলি শুধুমাত্র ক্লাসের ভিতরে ফাংশন দ্বারা ম্যানিপুলেট করা যেতে পারে। এগুলি দুটি আন্ডারস্কোর দিয়ে উপসর্গ দিয়ে ব্যক্তিগত হয়ে যায়৷
উদাহরণ
class year_graduated: def __init__(self, year=32): self._year = year # make the getter method def get_year(self): return self.__year # make the setter method def set_year(self, a): self.__year = a grad_obj = year_graduated() print(grad_obj._year) # Before using setter print(grad_obj.get_year()) # # # After using setter grad_obj.set_year(2019) print(grad_obj._year)
আউটপুট
উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয়:
32 AttributeError: 'year_graduated' object has no attribute '_year_graduated__year'
ব্যক্তিগত পদ্ধতি থেকে মান পড়া
না আমরা সম্পত্তি পদ্ধতি ব্যবহার করে এবং গেটার পদ্ধতি ব্যবহার না করে ব্যক্তিগত বৈশিষ্ট্যের মানগুলি অ্যাক্সেস করতে পারি।
উদাহরণ
class year_graduated: def __init__(self, year=32): self._year = year @property def Aboutyear(self): return self.__year @Aboutyear.setter def Aboutyear(self, a): self.__year = a grad_obj = year_graduated() print(grad_obj._year) grad_obj.year = 2018 print(grad_obj.year)
আউটপুট
উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয়:
32 2018