Python Object Oriented Programing OOP

OOP:

OOP এর পূর্ণরূপ হলঃ Object-Oriented Programming। OOP তে সবকিছুই অবজেক্ট। যেমন- আপনি আমাদের এই বিশ্বকে নিয়ে কল্পনা করতে পারেন যা চাঁদ, সূর্য, পৃথিবী ইত্যাদি অবজেক্ট নিয়ে গঠিত।

একইভাবে, আপনি একটি গাড়ি কল্পনা করতে পারেন যা চাকা, গিয়ার, ইঞ্জিন ইত্যাদি অবজেক্ট নিয়ে গঠিত।

অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং এর ধারণাও অনেকটা পথিবী এবং গাড়ির মতই। এটি সবকিছুকেই অবজেক্ট হিসাবে বিবেচনা করে। আপনি এই অবজেক্ট সমূহ ব্যবহার করে বিভিন্ন অ্যাপ্লিকেশন তৈরি করতে পারেন।

Create A Class

class Person:
    pass

Create An Instance And Access Class Attribute

class Person:
    name = 'olee'  #class Attribute
p1= Person()
print(p1.name)

Create A Method Inside Class And Access

class Person:
   def hello(self):
    print('Hello World')
p1= Person()
p1.hello()

self কীওয়ার্ড : self দ্বারা নিজ ক্লাসকে ইন্ডিকেট করে। যখন আমরা কোনো অবজেক্ট তৈরী করি এবং অবজেক্ট এর কোনো মেথড কল করি ওই মেথড এ তখন অটোমেটিক একটা আর্গুমেন্ট পাস করে যা ওই অবজেক্ট কে নির্দেশ করে। যখন আমরা p1 অবজেক্ট এর hello মেথড কল করি তখন অটোমেটিক একটা আর্গুমেন্ট পাস হয় যা p1 অবজেক্ট কে ধারণ করে। যার কারণে p1.name দ্বারা p1 এর নিজস্ব name আবার ক্লাস এর মধ্যে self.name দ্বারা Person ক্লাস এর name নির্দেশ করে।

__init__ () Method

এই মেথডটা ক্লাস এর ইনস্ট্যান্স যখন কল করে অবজেক্ট তৈরী করি তখন কন্সট্রাক্টর এর মত কাজ করে। ডিফল্টভাবে init () একটি পেরামিটার self নামে অন্য নামেও নিতে পারি।এটা বাধ্যতামূলক নিতেই হবে যা দিয়ে আমরা ক্লাস এর প্রপার্টি এক্সেস ও এসাইন করবো।যেমন init (myarg) .
মনেকরি আমরা যদি চাই অবজেক্ট তৈরী হওয়ার সময় ইনস্ট্যান্ট এট্রিবিউট হিসাবে কিছু নিবো। তাহলে init মেথড এ প্রথম পেরামিটার এর পর আমাদের কন্সট্রাক্টর এট্রিবিউট লিখতে পারি। def init(self, fname ): । এই এট্রিবিউট কে ক্লাসের এট্রিবিউট হিসাবে ধরতে নিচের মত এক্সেস করতে হবে

class Person:
    country='bd' # class attribute
    def __init__(self, fname):
      self.name = fname  #instance attribute

     

    def hello(self):
     print('Hello World')

p1= Person('olee')
print(p1.name)

এখানে আমরা self.name = যখন দিলাম তখন name নামে এই ক্লাসের একটি প্রপার্টি তৈরী হয়ে গেলো যা আমরা অবজেক্ট তৈরী করে এক্সেস করলাম।

Class Attribute VS Instance Attribute

যখন একটা ক্লাস এর ইনস্ট্যান্স অবজেক্ট তৈরী করে অবজেক্ট হতে কোনো এট্রিবিউট তৈরী হয় তখন সেটা ইনস্ট্যান্স এট্রিবিউট। আর যে এট্রিবিউট ক্লাস এর মধ্যে থাকে সেটা ক্লাস এট্রিবিউট।এক কথায় অবজেক্টের নিজের প্রপার্টি কে ইনস্ট্যান্স ভ্যারিয়েবল বলে।main ক্লাসের প্রোপার্টিকে ক্লাস প্রপার্টি/ভ্যারিয়েবল বলে।

class Student:
  pass

olee = Student()
mim = Student()
#after creating instance of class or create a object . assign attribute is instance attribute
olee.name= 'olee ahmmed'
mim.name = 'mahmuda farjana'
print(olee.name)
print(mim.name)

class Person:
    country='bd' #class Attribute
    def __init__(self, fname, age):
      self.name = fname
      self.age = age
      self.birthyear = 2000 # Instance Attribute

    def hello(self):
     print('Hello World')

p1= Person('olee',10)
print(p1.name)
print(p1.birthyear)

__dict__ Get Class/Object Property And Value

class Student:
  name=''

olee = Student()
mim = Student()
#after creating instance of class or create a object . assign attribute is instance attribute
olee.name= 'olee ahmmed'
mim.name = 'mahmuda farjana'
print(olee.__dict__)
print(Student.__dict__)

Every Object Is Deferment But Class Same

class Mobile:
    manufacturar = 'China'
    def __init__(self, mobilename, mobilemodel,mobileprice):
      self.name = mobilename
      self.model = mobilemodel
      self.price = mobileprice
      print(f' Your Mobile Name Is {self.name} \n Your Mobile Model Is {self.model} \n Your Mobile Price Is {self.price} \n Manufacturar By {self.manufacturar} \n')

vivo= Mobile('Vivo','v21e',27000)
vivo.manufacturar= "india"
print(vivo.manufacturar)

oppo = Mobile('Oppo','gs5',22000)
oppo.manufacturar= "Bangladesh"
print(oppo.manufacturar)


# আউটপুট এমন আসবে 
'''
 Your Mobile Name Is Vivo 
 Your Mobile Model Is v21e 
 Your Mobile Price Is 27000 
 Manufacturar By China 

india
 Your Mobile Name Is Oppo 
 Your Mobile Model Is gs5 
 Your Mobile Price Is 22000 
 Manufacturar By China 

Bangladesh

'''

মনেকরি আমরা একটি ক্লাস তৈরী করলাম যখন আমরা অবজেক্ট তৈরী করলাম তখন অবজেক্ট দুইটি একই ক্লাসকে বা আত্মাকে কেন্দ্র করে তৈরী হয়েছে কিন্তু দুইটি অবজেক্ট এর দেহ ভিন্ন। যার কারণে প্রপার্টির ভ্যালু নিজস্ব এবং একটি আরেকটির থেকে সম্পূর্ণ আলাদা।

Change Class Property And Instance Attribute Value By Object Creation

class Person:
  country = 'bd'

  def __init__(self, name):
    self.name = name
  

p1= Person('olee')
p1.country = 'India' # Change Class Attribute
p1.name = 'Gsm Ashik'
print(p1.country+' '+p1.name)
#OutPut Will Be
'''India Gsm Ashik'''

Access Class attribute Or Instance attribute inside a method

class Person:
  country = 'bd'

  def __init__(self, name):
    self.name = name

    
  def country(ab):
    print(f'Your Country Is {ab.name} \n')

  def favcolor(args):
    args.country= 'India'
    print(args.country)

p1= Person('olee')
p1.country()
p1.favcolor()

#output Will Be 
'''
Your Country Is olee 

India
 '''

Method With Parameter And Access With Class Attribute

class Person:
 
  country = 'Bangladesh'
  def __init__(self, name):
    self.a = name

  def hello(args):
   print(args.country)    
p1= Person('olee')
p1.hello()

#output Will be 
''''Bangladesh '''
class Person:
  country = 'bd'

  def __init__(self, name):
    self.name = name

    
  def country(ab,code):
    print(f'Your Country Is {ab.name}  And your Cofe Is  {code} \n')
p1= Person('olee')
p1.country(56)

#Output Will Be
'''
Your Country Is olee  And your Cofe Is  56
 '''

self কীওয়ার্ড ইন পাইথন OOP:

আমরা কোডের দিকে লক্ষ্য করলে self কীওয়ার্ড দেখতে পাবো কয়েক জায়গায়। যখন আমরা ক্লাসের মধ্যে কোনো মেথড বা ফাংশন কল করবো তখন আমাদের ফাংশনটিতে ডিফল্ট ভাবে একটি প্যারামিটার দিতে হয় যা দিয়ে আমরা এই ক্লাসের প্রপার্টি ও মেথড কে ধরতে পারি। self বাদেও অন্য নামে দেয়া যায়। পাইথন interpreter সেটা নিজে নিজে self হিসাবে গণ্য করে নেয়।যখন init() মেথডের মধ্যে self.a = ‘কিছুএকটা ‘ লিখি তখন সেটা এই ক্লাসের a এট্রিবিউট হিসাবে asign হয়।

class Person:
 

  def __init__(self, name):
    self.a = name

p1= Person('olee')
print(p1.a)

#output 
''' olee'''

Public And Private Access Modifier

public : যা ক্লাসের বাইরে এবং ভিতরে এক্সেস যোগ্য।
private : যা ক্লাসের শুধুমাত্র ভিতরে এক্সেস যোগ্য।

class Person:
    country = 'Bangladesh'  # class property/attribute with public access  
    def __init__(self, name, age):
      self.name = name # class property/attribute with public access 
      self.age = age # class property/attribute with public access 

      #it Is A Public Method
    def hello(self):
     print(self.country)
p = Person('olee',25)
print(p.country)
print(p.name)
print(p.age)
p.hello()
#output Will Be Below
'''Bangladesh
olee
25
Bangladesh'''

Private Modifier

When we declare data member as private it means they are accessible only side the class and are inaccessible outside the class.

আমরা এর আগে যে প্র্যাক্টিস করেছি তা সবগুলো পাবলিক মডিফায়ার দ্বারা করা। আমরা যখন আমাদের ক্লাস এর প্রপার্টি বা ক্লাস এট্রিবিউট এবং ক্লাস মেথডকে একসেস মডিফায়ার দিয়ে প্রাইভেট করবো তখন ক্লাস এর বাইরে থেকে ওই অবজেক্ট এর প্রাইভেট প্রপার্টি ভ্যালু ও মেথড কে এক্সেস ও মোডিফাই বা পৰিবৰ্তন করা যাবে না। নিচের কোডটি দেখি
এট্রিবিউট ও মেথড এর নামের শুরুতে _ ডাবল আন্ডারস্কোর দিয়ে প্রাইভেট এট্রিবিউট ও প্রাইভেট মেথড কল করা হয়। কোডটি আমরা পূর্বের মত করে রান করলে আমরা এরর পাবো কারণ এট্রিবিউট ও মেথড এর নামের শুরুতে _ ডাবল আন্ডারস্কোর দিয়ে প্রাইভেট করা হয়েছে।
অবজেক্ট তৈরী করার পর অবজেক্ট._classname__privatevariablename লিখলে privatevariablename এর ভ্যালু পাওয়া যাবে।

class MyClass:
  __country = 'Bangladesh'
  def __hello(self):
   print('hello World')

p1= MyClass()
print(p1._MyClass__country)

Python Gui Application Development With Page Software And Tkinter

পাইথন দ্বারা GUI এপ্লিকেশন তৈরী।

প্রথমে পাইথন ইনভেরনমেন্ট তৈরির পর page সফটওয়্যার ও activetcl সফটওয়্যার ইনস্টল করতে হবে এর পর page সফটওয়্যার ওপেন করে ডিজাইন করে মেনু বার হতে get_python অপসন হতে generatet_python_gui সিলেক্ট করে যেকোনো নাম দিয়ে সেভ করে আবার get_python মেনু অপসন হতে generate_support_module সিলেক্ট করে সেভ করে আবার পুনরায় get_python অপসন হতে generatet_python_gui সিলেক্ট করে সেভ দিলে এপ্লিকেশন তৈরী হবে।

Python Turorial

Python Install

এবং idle পাইথন ওপেন করে পাইথন ইনস্টল করা ফোল্ডারে এবার রান করলে রান হবে।

উইন্ডোস অপারেটিং সিস্টেম এ পাইথন ইনস্টল ও রান করা

প্রথমে উইন্ডোস এ পাইথন ডাউনলোড করে ইনস্টল করতে হবে ইনস্টল করার সময় ইনস্টল ডিরেক্টরি coutomize ভাবে সিলেক্ট করতে হবে যেকোনো পাইথন স্ক্রিপ্ট লিখে .py এক্সটেনশন সহকারে সেভ করতে হবে সিস্টেম ইনভেরনমেন্ট পথ হিসাবে পাইথন এর ইনস্টল ডিরেক্টরি সেট করে cmd ওপেন করে python লিখলে পাইথন এর ইনস্টল ইনফরমেশন ভিজ্যুয়াল ষ্টুডিও কোড ইনস্টল করে পাইথন এক্সটেনশন ও কোড রানার এক্সটেনশন ইনস্টল করে কোড লিখে রাইট বাটন ক্লিক করে রান কোড এ এক্লিক করলে কোড রান হবে

উইন্ডোজ অপারেটিং সিস্টেমে এ কিভাবে পাইথন কোড রান করবো

প্রথমে পাইথন path সহ ইনস্টল করার পর যে ফোল্ডার এ পাইথন প্রোগ্রাম আছে সেই ফোল্ডার এ cmd ওপেন করে python program.py রান করি মনে করি প্রোগ্রাম এর নাম hello.py তাহলে hello.py ফোল্ডার এ cmd ওপেন করে python hello.py রান করি

Python Variable

পাইথন ভ্যারিয়েবল এ কোনো আইডেন্টিফায়ার দিতে হয়না শুধুমাত্র ভ্যারিয়েবল এর নাম ছোটোহাতের অক্ষর দ্বারা শুরু করে ডিফাইন করতে হয়।
যেমন : salary =40;country = “Bangladesh”;

Python datatype Custing

যদিও পাইথন তার ডাটাটাইপ নিজেই চিনতে পারে তবে অনেক সময় ভ্যারিয়েবল এ ডাটা টাইপ ডিফাইন করে দিতে হয় তখন কাস্টিং ব্যবহার করতে হয়। যাতে অন্য কোনো টাইপের ডাটা না এসাইন হতে পারে এক্ষেত্রে ডাটাটাইপ এর নাম বেবহার করে কনভার্ট করতে হয় । যেমন 😡 = int(1) # x will be 1
y = int(2.8) # y will be 2
z = int(“3”) # z will be 3

Python String

অন্য সমস্ত ল্যাঙ্গুয়েজের মতো পাইথন এর স্ট্রিং সিঙ্গেল কোটেশন ,ডাবল কোটেশন এ রাখতে হয় অনেক সময় মাল্টিপল স্ট্রিং রাখতে হয় তখন তিনটা সিঙ্গেল কোটেশন বা তিনটা ডাবল কোটেশনের মধ্যে রেখে স্ট্রিং নিয়ে কাজ করা যায় যেমন :
Single quotes : a =’ashik’;
Double quotes : a =”ashik”;
Multiple Single Quotes : a = ”’olee ahmmed ashik,gsm ashik,lover boy”’;
Multiple Double Quotes : a = “””olee ahmmed ashik,gsm ashik,lover boy”””;

Python List

পাইথন লিস্ট (এরে )
ভ্যারিয়েবল এ মাল্টিপল ভ্যালু এসাইন এবং ভ্যালু খুঁজতে পাইথন লিস্ট কনসেপ্ট ব্যবহার করে।
List : একটা ডাটা কালেকশন যা ডাটা ধারণ করে অর্ডার অনুযায়ী এবং এটা পরিবর্তনশীল। ডুপ্লিকেট ভ্যালু সাপোর্ট করে ।এটা জাভা এরে স্টাইল এ কাজ করতে হয়।
List Example:
country = [“bd”,”india”,”pakistan”];
print(country[0]);
output : bd
Tuple :একটা ডাটা কালেকশন যা ডাটা ধারণ করে অর্ডার ফলো করে এবং এটা অপরিবর্তনশীল । ডুপ্লিকেট ভ্যালু সাপোর্ট করে । এটা php এরে স্টাইল এ কাজ করতে হয়।
Tuple Example :
country = (“bd”,”india”,”pakistan”);
print(country[2]);
Output : pakistan
Set :একটা ডাটা কালেকশন যা ডাটা ধারণ করে অর্ডার ফলো করে না এবং এটা অপরিবর্তনশীল এবং এক্সেস যোগ্য। ডুপ্লিকেট ভ্যালু সাপোর্ট করে না। এটা java কালেকশন এর লিস্ট স্টাইল এ কাজ করে। এটাকে ফর লুপ দ্বারা এক্সেস করতে হয় এবং এটা ফুল সেট আপডেট সাপোর্টেড কিন্তু ডাটা একবার অ্যাড হলে তা ইনডেক্স অনুযায়ী পরিবর্তন করা যায়না। তবে সিঙ্গেল অ্যাড সাপোর্টেড
Set Example :
thisset = {“apple”, “banana”, “cherry”}
for x in thisset:
print(x);
print(“banana” in thisset)
Dictionary :
একটা ডাটা কালেকশন যা ডাটা ধারণ করে অর্ডার ফলো করে না পরিবর্তনশীল এবং এক্সেস যোগ্য।এটা এসোসিয়েটিভ এরে স্টাইল এ কাজ করে।
Dictionary Example :
list= {
  “brand”: “Ford”,
  “model”: “Mustang”,
  “year”: 1964
}
print( list ) ;
x = list [“model”]
print(list.get(“model”) );
list[“year”] = 2018
for x in thisdict:
  print(x)

Python If elif Else Condition

পাইথন ইফ ইল্স কন্ডিশন এর জন্য if ,elif ,else কীওয়ার্ড বেবহার করে।
number = 100;
if number >90:print(“Number Is Grater Than 90”);
Output Number Is Grater Than 90

Python Function

পাইথন ফাংশন শুরু হয় def কীওয়ার্ড দিয়ে এরপরে ফাংশন এর নাম তার পর ব্রাকেটের মধ্যে দরকার পড়লে parameters or arguments রাখা যায় ():এর পর ফাংশনের আউটপুটের কাজ এর বর্ণনা দিতে হয় ফাংশনের আউটপুট পেতে ফাংশনটি কল করতে হয়।
Example : def myfunction():print(“sdfdg”)
myfunction();
Output : sdfdg

Python Module

পাইথন মডিউল : মডিউল হলো অনেকগুলো ফাঙ্কশন ও মেথডের সমষ্টি অন্যান্য ল্যাঙ্গুয়েজে যেমন বিভিন্ন ফাইল ইম্পোর্ট করে কাজ করা যাই এটাও তাই।
কিভাবে মডিউল বানাবো : যেকোনো একটি ফাইল এ ফাংশন লিখে এক্সটেনশন সহকারে সেভ করতে হবে
কিভাবে মডিউল ব্যবহার করবো : import কীওয়ার্ড ব্যবহার করে মডিউল ইম্পোর্ট করবো এবং ব্যবহারের জন্য modulename.function নাম ব্যবহার করবো
Example : def greeting(name):  print(“Hello, ” + name)
Save As : mymodule.py
Use As Another File Like This Way
import mymodule
mymodule.greeting(“Jonathan”)Run example »

Python Date

পাইথন date : অন্যান্য ল্যাঙ্গুয়েজের মতো পাইথনে ডেট ফাংশন বিল্ট ইন নাই তবে বিল্টইন মডিউল হিসাবে আছে :
Example : import datetime
x= datetime.datetime.now();
print(x);

Python Json

Json ডাটা নিয়ে কাজ করার জন্য পাইথনে ডিফল্ট ভাবে মডিউল বা প্যাকেজ আছে প্রথমে import json ব্যবহার করে লাইব্রেরিটি ব্যবহারের উপযোগী করে জেসন ডাটা load() মেথডের মাধ্যমে লোড করে json.loads(জেসন ফাইলের নাম ) print ফাংশন দ্বারা জেসন পার্স করা যায়। পাইথন হতে জেসন এ কনভার্ট করতে json.dumps(জেসন ফাইলের নাম) কনভার্ট হয়ে যাবে। rint ফাংশন দ্বারা জেসন পার্স করা যায়
Example : Json Data Parse by Python
import json
x =  ‘{ “name”:”John”, “age”:30, “city”:”New York”}’
y = json.loads(x)
print(y[“age”])
Example : Python To Json Convert
import json
x = {
  “name”: “John”,
  “age”: 30,
  “city”: “New York”
}
y = json.dumps(x)
print(y)Run example »