Advertisement

Dive Deep into the Class in Python

4 min read
View on Hashnode

Share this article

আমরা ইতিমধ্যেই OOP এর বেসিক ধারনা পেয়েছি। আজকে ক্লাস সম্পর্কে বিস্তারিত আলোচনা করবো।

আগেই জেনেছি ক্লাস হচ্ছে একটি নির্দিষ্ট অবজেক্ট এর টেম্পলেট। অর্থাৎ আমরা ক্লাস তৈরি করার মাধ্যমে বলে দিতে পারি অব্জেক্ট এর প্রোপার্টি কি কি হবে , কি কি মেথড থাকবে।

ক্লাস তৈরি করার সিনট্যাক্স হচ্ছে এমনঃ

class class_name:

pass

class হচ্ছে কী-ওয়ার্ড যার মাধ্যমে পাইথনে class ডিফাইন করতে হয় এবং class_name হচ্ছে ক্লাস এর নাম। তোমাদের ইচ্ছা মতো ক্লাস এর নাম দিতে পারো এবং ক্লাস এর নামের শেষে আমাদেরকে অবশ্যই Semicolon দিতে হবে নইলে Syntaxt error আসবে। যদি কোন লাইনে আমরা Semicolon ইউজ করি তাহলে আমাদেরকে তারপরের লাইনে ৪টি স্পেস দিয়ে লেখা লাগবে। যতগুলো লাইন এভাবে স্পেস দিয়ে লিখবো সেইসব লাইন মিলে একটি কোড ব্লক তৈরি করবে। শেষ লাইনে লিখেছি pass যা দিয়ে বোঝাচ্ছি আমরা আপাদত আর কিছু লিখবো না।

এখন একটি ক্লাস তৈরি করে দেখি আমরাঃ

class Student:

Name = “ Ata Alahy Nishan”

Roll = “01256”

Group = “A”

Department = “Computer Science and Technology”

print(Student.Name) # output: Ata Alahy Nishan

print(Student.Roll) # output: 01256

print(Student.Group) # output: A

print(Student.Department) # output: Ata Alahy Nishan

এখানে class এর অধিনে যতগুলো Variable নিয়েছি সবগুলোকে বলা হচ্ছে প্রোপার্টি। যেহেতু class এর অধিনে এইগুলো লিখেছি তাই এইগুলো হচ্ছে ক্লাস প্রোপার্টি বা Class Attribute

কিন্তু আমরা এমন কিছু চাই যে , আমরা শুধু Student এর নাম , রোল , গ্রুপ , ডিপার্টমেন্ট দিলেই সেটি একটি স্টুডেন্ট অব্জেক্ট তৈরি করে দিবে আমাদেরকে। অর্থাৎ আমরা Name , Roll , Group , Department সহ একজন Student এর যেসব কমন Property থাকে সেগুলোকে Initialize করে দিবো। আর এই Initialize এর কাজ করতে আমাদেরকে ইউজ করতে হবে init method। init এর পূর্ণরূপ হচ্ছে initial । এই init method অব্জেক্ট তৈরি করে। যখন আমরা ক্লাস ডিফাইন করি তখন এটি নিজে নিজেই কল হয়।

এখন আমরা একটি Student class তৈরি করবো। এই Student class এ Property হিসেবে থাকবে name , roll , group , dept , phone , email এবং কয়েকটি মেথড থাকবে name , roll , group , dept , phone ,email এইগুলো পরিবর্তন করার জন্য। কারন একজন Student এর রোল , গ্রুপ , ইমেইল , ফোন , ডিপার্টমেন্ট পরিবর্তন হতে পারে।

class Student:

def init(self,name,roll,group,dept,email,phone):

self.name = name

self.roll = roll

self.group = group

self.dept = dept

self.email = email

self.phone = phone

def studentInfo(self):

return f'Name:{self.name}\nRoll:{self.roll}\nGroup:{self.group}\nDepartment:{self.dept}\nEmail:{self.email}\nPhone:{self.phone}'

def changeName(self,name):

self.name = name

print(‘Success’)

def changeEmail(self.email):

self.email = email

print(‘Success’)

def changePhone(self,phone):

self.phone = phone

print(‘Success’)

def changeGroup(self.group):

self.group = group

print(‘Success’)

def changeDept(self,dept):

self.dept = dept

print(‘Success’)

obj = Student('Nishan',01256,'A','CST',[email protected]',01**********)

print(obj.studentInfo())

obj.changeName(‘Nishan’) # output: Success

obj.changeGroup(‘B’) # output: Success

obj.changeDept(ENVT) # output: Success

Output

Name: Nishan

Roll:853756

Group: A

Department: CST

Email:[email protected]

Phone:01*********

উপরোক্ত কোড ব্লকে আমরা অনেকগুলো প্রোপার্টি নিয়েছি সাথে কয়েকটি মেথড নিয়েছি। মেথড এর কয়েকটি প্রকারভেদ রয়েছে

১) ক্লাস মেথড

২) স্পেশাল মেথড

৩)অবজেক্ট মেথড / ইন্সট্যান্স মেথড (অবজেক্ট এর অপর নাম ইন্সট্যান্স)

৪) স্ট্যাটিক মেথড

উপরের ক্লাস এ আমরা যতগুলো মেথড ডিফাইন করেছি সবগুলো অব্জেক্ট মেথড। প্রথম মেথডটি অবজেক্ট মেথড সাথে স্পেশাল মেথড

প্রশ্নঃ কোন মেথড কি সেটা কিভাবে বুঝবো?

→ মেথড নিয়ে বিস্তারিত অন্য কোন আর্টিকেল এ লিখবো। তবে অবজেক্ট মেথড চেনার উপায় হচ্ছে “ **মেথড এর প্রথম Parameter হিসেবে self হবে” । এখন আরেকটি প্রশ্ন জাগতে পারে মনে যে ‘ self কি? ’

About self: self হচ্ছে সেই অবজেক্ট নিজেই। আমরা যখন কোন অবজেক্ট তৈরি করি তখন সেটা কম্পিউটার মেমোরিতে নির্দিষ্ট কোন লোকেশনে স্টোর হয়ে থাকে। সেই লোকেশনের মান হচ্ছে self । আমাদেরকে সবসময় মনে রাখতে হবে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এ আমরা যদি কোন অবজেক্ট নিয়ে কাজ করতে চাই তাহলে সেই অবজেক্ট এর রেফেরেন্সে কাজ করতে হবে। আর অবজেক্ট রেফেরেন্স হচ্ছে self । প্রতিটি অবজেক্ট এর ইউনিক মেমোরি লোকেশন রয়েছে। আমরা যদি আমাদের Student class দিয়ে বানানো obj এর মেমোরি লোকেশন দেখতে চাই তাহলে আমাদেরকে এটি লিখা লাগবে “print(obj)” → এখানে obj হচ্ছে variable এর নাম। অর্থাৎ যে variable এর মধ্যে আমাদের অবজেক্ট তৈরি করেছি। যেহেতু obj variable এর মধ্যে আমাদের প্রথম Student object তৈরি করেছি তাই print() এর মধ্যে obj লিখতে হবে। লিখে কোড run করলে এমন একটি অউটপুট আসবে

Output : <__main__.Student object at 0x7c7421939bb0>

**একেকজনের কম্পিউটার এর মান একেক রকম হবে।

অর্থাৎ কম্পিউটার বলছে Student class এর একটি অবজেক্ট মেমোরি তে 0x7c7421939bb0 এই জায়গায় সেভ হয়েছে। আর self এর মানে হচ্ছে এই মেমোরি লোকেশন। আরেকটু এক্সপ্লেইন করা যাক।

আমরা কোডে লিখেছি ঃ

obj = Student('Nishan',01256,'A','CST',[email protected]',01**********)

যখন এটি লিখেছি তখন 0x7c7421939bb0 এই মেমোরি লোকেশনে একটি অবজেক্ট স্টোর করা হয়েছে। এরপর আমরা বললাম self.name = name । আমরা একটু আগেই দেখেছি আমাদের মেমোরি লোকেশন টি হচ্ছে 0x7c7421939bb0 । অর্থাৎ self = 0x7c7421939bb0। সুতরাং , 0x7c7421939bb0.name = name । যদি বাংলাতে বলি তাহলে আমরা কম্পিউটার কে বলছি 0x7c7421939bb0 লোকেশনে যে অবজেক্ট তৈরি হয়েছে সেটার নাম হবে আরগুমেন্ট হিসেবে যে নাম দেয়া হয়েছে সেই নামটি। আর এই ক্লাস এর প্রোপার্টি বা মেথড অ্যাক্সেস করতে চাইলে আমাদেরকে অবজেক্ট এর রেফেরেন্স এর মাধ্যমে করতে হবে। অর্থাৎ self থাকা লাগবে।

Advertisement
Advertisement
0

reactions

Login to Hashnode to react

Advertisement
Advertisement

Comments

Comments are managed on Hashnode. Join the discussion there!

You'll need a Hashnode account to comment. It's free and takes seconds to sign up!

Advertisement
Recommended Content

Related Posts

সাইবার সিকিউরিটিতে ক্যারিয়ার কিভাবে শুরু করবেন? জানুন বিশেষজ্ঞ আশরাফুল আলমের সাথে | Talk With CST Club Ep. 1

সাইবার সিকিউরিটিতে ক্যারিয়ার কিভাবে শুরু করবেন? জানুন বিশেষজ্ঞ আশরাফুল আলমের সাথে | Talk With CST Club Ep. 1

🔥 সাইবার সিকিউরিটি: শুধু চাকরি নয় — একটি মিশন চাকরি নয় — চ্যালেঞ্জ।ইনকাম নয় — ইমপ্যাক্ট। সাইবার সিকিউরিটি ক্যারিয়ারের জগতে পা রাখতে চাইলে আপনার হাতে শুধু স্কিল নয় — সঠিক গাইডলাইন, প্রেরণা, এবং প্র্যাকটিক্যাল রোডম্যাপ দরকার। আর সেই গাইডলাইন এবার...

CST ClubCST Club
2 min
#career in cybersecurity#freelancing in cybersecurity
Python Inheritance Part - 02 ( MRO and super() )

Python Inheritance Part - 02 ( MRO and super() )

গত আর্টিকেলে আমরা পাইথন এর ইনহেরিট্যান্স এবং তার প্রকারভেদ নিয়ে আলোচনা করেছিলাম। সেখানে Multiple Inheritance সম্পর্কে জেনেছি আমরা। Multiple Inheritance এ একটি চাইল্ড ক্লাসের একাধিক প্যারেন্ট ক্লাস থাকে। আমরা জানি কো্ন চাইল্ড ক্লাসের মধ্যে যে প্রোপার্...

Ata Alahy NishanAta Alahy Nishan
2 min
super()_method_pythonMRO
Python Inheritance Part - 01

Python Inheritance Part - 01

Inheritance কি? Inhertitance হচ্ছে এমন এক পদ্ধতি যার মাধ্যমে একটি ক্লাসের প্রোপার্টি , মেথড অন্য কোন ক্লাসকে দেয়া যায়। এক্ষেত্রে যার থেকে ইনহেরিট করা হয়েছে তাকে বলে প্যারেন্ট ক্লাস এবং যার কাছে ইনহেরিট করা হয়েছে তাকে বলে চাইল্ড ক্লাস। Syntax of inher...

Ata Alahy NishanAta Alahy Nishan
4 min
hybrid-inherithierarchical-inheritance
Advertisement
Recommended Content