পাইথন তার অস্তিত্ব থেকে একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষা। ক্লাস এবং অবজেক্ট হল অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর দুটি প্রধান বিল্ডিং ব্লক।
একটি ক্লাস একটি নতুন ধরনের অবজেক্ট তৈরি করে যেখানে অবজেক্টগুলি ক্লাসের উদাহরণ।
চলুন একটি সহজ ক্লাস তৈরি করি,
পাইথনে একটি ক্লাস সংজ্ঞায়িত করুন
শুধু একটি খালি ক্লাস সংজ্ঞায়িত করা যাক।
#একটি ক্লাসক্লাস যানবাহন সংজ্ঞায়িত করুন():পাস # একটি খালি ব্লক# ইনস্ট্যান্টিয়েটিং অবজেক্টসভ =যানবাহন()মুদ্রণ(v)
ফলাফল
<__main__. 0x055DB9F0 এ যানবাহন বস্তু>
আমরা উপরে কি করেছি?
তাই প্রথমে, আমরা নতুন ক্লাস ভেহিকল তৈরি করতে ক্লাস স্টেটমেন্ট ব্যবহার করি, যার পরে স্টেটমেন্টের একটি ইন্ডেন্টেড ব্লক থাকে যা ক্লাসের বডি গঠন করে। আমাদের ক্ষেত্রে, আমাদের কাছে একটি খালি ব্লক রয়েছে যা পাস স্টেটমেন্ট ব্যবহার করে অভিযুক্ত করা হয়েছে৷
৷এরপরে, Vehicle ক্লাস ব্যবহার করার জন্য, আমরা ক্লাসের নাম ব্যবহার করে এই ক্লাসের একটি অবজেক্ট/ইনস্ট্যান্স তৈরি করেছি যার পরে এক জোড়া বন্ধনী রয়েছে। তারপর বস্তুটি তৈরি হয়েছে তা নিশ্চিত করার জন্য, আমরা কেবল এটি মুদ্রণ করি এবং তথ্য পাই যে আমাদের কাছে __main__ মডিউলে যানবাহন শ্রেণীর একটি উদাহরণ রয়েছে।
অবজেক্ট(v) হল একটি ক্লাসের উদাহরণ। প্রতিটি নির্দিষ্ট বস্তু একটি নির্দিষ্ট শ্রেণীর একটি উদাহরণ। আমরা একটি ক্লাসের যতগুলি উদাহরণ তৈরি করতে পারি এবং ক্লাস পদ্ধতি এবং বৈশিষ্ট্যগুলি ধারণ করতে পারি৷
ক্লাসের ভিতরে সংজ্ঞায়িত সমস্ত পদ্ধতি এবং ভেরিয়েবলগুলি এর অবজেক্টগুলিতে অ্যাক্সেসযোগ্য।
ক্লাসের ভিতরে পদ্ধতি সংজ্ঞায়িত করুন
শ্রেণীর যান ():def car(self):color ='Red' return colorv =Vehicle()print(v.car())print(v)
ফলাফল
লাল<__প্রধান__.0x05A59690 এ যানবাহন বস্তু>
উদাহরণ পদ্ধতি
পাইথনে, যখন আমরা একটি ক্লাসে কোনো পদ্ধতি সংজ্ঞায়িত করি, তখন আমাদের যেকোনো ইনস্ট্যান্স পদ্ধতিতে একটি ডিফল্ট যুক্তি প্রদান করতে হবে, যা স্বয়ং। এর মানে যখন আমরা সেই ক্লাস থেকে একটি অবজেক্ট তৈরি করি, সেই অবজেক্টটি নিজেই সেই পদ্ধতিতে চলে যাবে।
সাধারণত আমরা ফাংশনটি কল করার সময় কোনো আর্গুমেন্ট (স্ব) প্রদান করি না, তবে আর্গুমেন্ট (স্ব) আবশ্যক, যখনই আমরা সেই ক্লাসের মধ্যে সেই ফাংশনটিকে সংজ্ঞায়িত করি।
আসুন উদাহরণ ব্যবহার করে উপরের ধারণাটি বুঝতে পারি।
class myClass():def myMethod(self):'Hello'myInstance =myClass()print(myInstance.myMethod())
ফলাফল
হ্যালো
সুতরাং উপরের প্রোগ্রামে, আমরা একটি ক্লাস myClass সংজ্ঞায়িত করি এবং এর ভিতরে আমরা একটি পদ্ধতি সংজ্ঞায়িত করেছি myMethod() এবং শুধুমাত্র একটি আর্গুমেন্ট পাস করেছি যার নাম self।
যাইহোক, যখন আমরা একটি ক্লাসের উদাহরণের মাধ্যমে পদ্ধতিটিকে কল করি, তখন আমরা এটিতে কোন যুক্তি প্রদান করিনি। এর কারণ হল যখনই আমরা একটি উদাহরণে পদ্ধতিটিকে কল করি, প্রথম যুক্তিটি নিজেই একটি ক্লাসের একটি উদাহরণ৷
উপরের প্রোগ্রাম থেকে একটি লাইন পরিবর্তন করা যাক-
def myMethod():
আমি শুধু আমার পদ্ধতি (myMethod()) থেকে আর্গুমেন্ট (স্ব) মুছে ফেলি। এখন আবার প্রোগ্রাম চালানো যাক এবং দেখুন কি হয়েছে।
=================পুনরায় শুরু করুন:C:\Python\Python361\oops_python.py =================ট্রেসব্যাক (সর্বাধিক সাম্প্রতিক কল শেষ):ফাইল "C:\Python\Python361\oops_python.py", লাইন 18,প্রিন্টে(myInstance.myMethod())TypeError:myMethod() 0 অবস্থানগত আর্গুমেন্ট নেয় কিন্তু 1 দেওয়া হয়েছিল
সুতরাং এটি বাধ্যতামূলক যে পদ্ধতিতে আপনার প্রথম যুক্তি একটি স্ব।
উদাহরণ বৈশিষ্ট্যগুলি
এগুলি __init__ পদ্ধতির পরামিতি হিসাবে সংজ্ঞায়িত বস্তু-নির্দিষ্ট বৈশিষ্ট্য। প্রতিটি বস্তুর নিজেদের জন্য আলাদা মান থাকতে পারে।
নীচের উদাহরণ বিবেচনা করুন,
randomclass myClass():def myMethod(self):self.attrib1 =random.randint(1, 11)self.attrib2 =random.randint(1,21)myInst =myClass()myInst.myMethod()মুদ্রণ (myInst.attrib1)মুদ্রণ(myInst.attrib2)
ফলাফল
218
উপরের প্রোগ্রামে, "attrib1" এবং "attrib2" হল উদাহরণের বৈশিষ্ট্য।
Python-এ Init Constructor
কনস্ট্রাক্টর হল একটি বিশেষ ধরনের পদ্ধতি যা ক্লাসের ইনস্ট্যান্স সদস্যদের শুরু করতে ব্যবহৃত হয়।
কনস্ট্রাক্টর দুই ধরনের হতে পারে-
- প্যারামিটারাইজড কনস্ট্রাক্টর
- অ-প্যারামিটারাইজড কনস্ট্রাক্টর
পাইথনে, “__init__” হল প্রতিটি পাইথন ক্লাসের সাথে যুক্ত একটি অনন্য পদ্ধতি।
পাইথন ক্লাস থেকে তৈরি প্রতিটি বস্তুর জন্য এটি স্বয়ংক্রিয়ভাবে কল করে। এর উদ্দেশ্য হল ব্যবহারকারীর দ্বারা সরবরাহ করা মানগুলির সাথে ক্লাসের বৈশিষ্ট্যগুলি শুরু করা।
অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এ একে কন্সট্রাক্টর বলা হয়।
শ্রেণীর কর্মচারী:def __init__(self, name):self.name =name def display(self):print("কর্মচারীর নাম হল:", self.name)obj1 =Employee('Zack')obj2 =কর্মচারী('রাজেশ')obj3 =কর্মচারী('Tashleem')obj3.display()obj1.display()
ফলাফল
কর্মচারীর নাম হল:তাসলিম কর্মচারীর নাম হল:জ্যাক
উপরের প্রোগ্রামে, যখন আমরা একটি ইন্সট্যান্স (obj1 এবং obj2) তৈরি করি, তখন আমরা নাম আর্গুমেন্ট পাস করি এবং কনস্ট্রাক্টর সেই আর্গুমেন্টটি ইনস্ট্যান্স অ্যাট্রিবিউটে অ্যাসাইন করবে।
সুতরাং যখন আমরা একটি নির্দিষ্ট উদাহরণে প্রদর্শন পদ্ধতি কল করি, তখন আমরা নির্দিষ্ট নামটি পাব।
পাইথনে এনক্যাপসুলেশন
পাইথন প্রকৃতিতে উফ, এটি পদ্ধতি এবং ভেরিয়েবলগুলিতে অ্যাক্সেস সীমাবদ্ধ করার একটি উপায় সরবরাহ করে৷
জায়গায় ডেটা এনক্যাপসুলেশনের সাথে, আমরা বস্তুতে একটি বৈশিষ্ট্য কল করে ইনস্ট্যান্স অ্যাট্রিবিউটকে সরাসরি পরিবর্তন করতে পারি না। এটি আমাদের অ্যাপ্লিকেশনকে হ্যাকারদের জন্য ঝুঁকিপূর্ণ করে তুলবে। যাইহোক, আমরা শুধুমাত্র নির্দিষ্ট পদ্ধতিতে কল করে ইনস্ট্যান্স অ্যাট্রিবিউটের মান পরিবর্তন করি।
উদাহরণ
শ্রেণীর পণ্য:def __init__(self):self.__maxprice =1000 self.__minprice =1 def sellingPrice(self):print('আমাদের পণ্যের সর্বোচ্চ মূল্য হল:{}'.format(self.__maxprice)) print( 'আমাদের পণ্যের সর্বনিম্ন মূল্য হল:{}'.ফরম্যাট(self.__minprice)) def productMaxPrice(self, price):self.__maxprice =pricedef productMinPrice(self, price):self.__minprice =priceprod1=Product()prod1.sellingPrice ()prod1.__maxprice =1500prod1.sellingPrice()prod1.__minprice =10prod1.sellingPrice()prod1.productMaxPrice(1500)prod1.sellingPrice()prod1.productMinPrice(10)প্রোড1.ফলাফল
আমাদের পণ্যের সর্বোচ্চ মূল্য হল:1000আমাদের পণ্যের সর্বনিম্ন মূল্য হল:1আমাদের পণ্যের সর্বোচ্চ মূল্য হল:1000আমাদের পণ্যের সর্বনিম্ন মূল্য হল:1আমাদের পণ্যের সর্বোচ্চ মূল্য হল:1000আমাদের পণ্যের সর্বনিম্ন মূল্য হল:1আমাদের পণ্যের সর্বোচ্চ মূল্য হল:1500আমাদের পণ্যের সর্বনিম্ন মূল্য হল :1আমাদের পণ্যের সর্বোচ্চ মূল্য হল:1500আমাদের পণ্যের সর্বনিম্ন মূল্য হল:10উপরের প্রোগ্রামে, আমরা প্রোডাক্ট ক্লাসের একটি ইন্সট্যান্স তৈরি করেছি এবং ইনস্ট্যান্স ভেরিয়েবলের মান পরিবর্তন করার চেষ্টা করেছি, তবে এটি এখনও কনস্ট্রাক্টরের ভিতরে সেট করা মান দেয়।
ইনস্ট্যান্স অ্যাট্রিবিউটের মান পরিবর্তন করার একমাত্র উপায় হল productMaxPrice() বা productMinPrice() পদ্ধতিতে কল করা।