मान लें कि हम किसी बैंक में "खाता" का संक्षिप्त विवरण देना चाहते हैं। यहाँ एक दृष्टिकोण है, 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
एक समान अनुकूलन करता है)।