বলুন আমরা একটি ব্যাংকে একটি "অ্যাকাউন্ট" এর বিমূর্ততা সরবরাহ করতে চাই। function
পাইথনে একটি অবজেক্ট ব্যবহার করে এখানে একটি পদ্ধতির কথা বলা হয়েছে:
def account():
"""Return a dispatch dictionary representing a bank account.
>>> a = account()
>>> a['deposit'](100)
100
>>> a['withdraw'](90)
10
>>> a['withdraw'](90)
'Insufficient funds'
>>> a['balance']
10
"""
def withdraw(amount):
if amount > dispatch['balance']:
return 'Insufficient funds'
dispatch['balance'] -= amount
return dispatch['balance']
def deposit(amount):
dispatch['balance'] += amount
return dispatch['balance']
dispatch = {'balance': 0,
'withdraw': withdraw,
'deposit': deposit}
return dispatch
প্রকার বিমূর্তি ব্যবহার করে (যেমন, class
পাইথনের কীওয়ার্ড) ব্যবহার করে এখানে আরও একটি পদ্ধতি রয়েছে :
class Account(object):
"""A bank account has a balance and an account holder.
>>> a = Account('John')
>>> a.deposit(100)
100
>>> a.withdraw(90)
10
>>> a.withdraw(90)
'Insufficient funds'
>>> a.balance
10
"""
def __init__(self, account_holder):
self.balance = 0
self.holder = account_holder
def deposit(self, amount):
"""Add amount to balance."""
self.balance = self.balance + amount
return self.balance
def withdraw(self, amount):
"""Subtract amount from balance if funds are available."""
if amount > self.balance:
return 'Insufficient funds'
self.balance = self.balance - amount
return self.balance
আমার শিক্ষক class
কীওয়ার্ডটি প্রবর্তন করে এবং আমাদের বুলেট পয়েন্টগুলি দেখিয়ে "অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং" শীর্ষক বিষয়টি শুরু করেছিলেন :
অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং
মডুলার প্রোগ্রামগুলি সংগঠিত করার জন্য একটি পদ্ধতি:
- বিমূর্ততা বাধা
- বার্তা পাস হচ্ছে
- তথ্য এবং সম্পর্কিত আচরণ একসাথে বান্ডিলিং
আপনি কি মনে করেন উপরোক্ত সংজ্ঞাটি পূরণ করার জন্য প্রথম পদ্ধতির যথেষ্ট হবে? যদি হ্যাঁ, তবে class
অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের জন্য কীওয়ার্ডটির আমাদের প্রয়োজন কেন ?
foo.bar()
সাধারণত অনুরূপ foo['bar']()
, এবং বিরল ঘটনাগুলিতে পরবর্তী সিনট্যাক্স আসলে দরকারী।
object['method'](args)
পাইথন অবজেক্টগুলি আসলে এর সমতুল্য করে object['method'](object, args)
। যখন বেস ক্লাসটি শিশু শ্রেণিতে পদ্ধতিগুলি কল করে, এটি কৌশলগত প্যাটার্নে প্রাসঙ্গিক হয়।
class
অনুরূপ অপ্টিমাইজেশন রয়েছে)।