Python में, जब आप किसी क्लास का एक उदाहरण (instance) बना लेते हैं, तो आप initialization के दौरान दिए गए मूल्यों तक सीमित नहीं रहते। आप सीधे ही instance के गुणों (attributes) को संशोधित कर सकते हैं। उदाहरण के लिए, आइए अपने पहले के Book क्लास का उपयोग करें। Book का एक instance बनाने के बाद, आप पृष्ठों की संख्या या लेखक का नाम अपडेट करना चाह सकते हैं। आप यह सीधे डॉट ऑपरेटर . का उपयोग करके गुण तक पहुँचकर और नया मान असाइन करके कर सकते हैं:
class Book:
def __init__(self, title, author, pages):
self.title = title # पुस्तक के उदाहरण को शीर्षक असाइन करें
self.author = author # लेखक को पुस्तक के उदाहरण में असाइन करें
self.pages = pages # पृष्ठों की संख्या को पुस्तक के उदाहरण में असाइन करें
self.is_read = False # पुस्तक अभी तक पढ़ी नहीं गई है
book1 = Book('To Kill a Mockingbird', 'Harper Lee', 281)
print(book1.pages) # 281
book1.pages = 324 # पृष्ठों की संख्या अपडेट करें
print(book1.pages) # 324
print(book1.author) # 'Harper Lee'
book1.author = 'Lee, Harper' # लेखक का नाम अपडेट करें
print(book1.author) # 'Lee, Harper'
चुनौती: एक Book क्लास बनाएँ
आपका कार्य एक Book क्लास डिज़ाइन करना है जिसमें चार गुण होंगे:
title: डिफ़ॉल्ट मान "Untitled Book"
author: डिफ़ॉल्ट मान "Unknown Author"
price: डिफ़ॉल्ट मान 0.0
quantity_in_stock: डिफ़ॉल्ट मान 0
इस क्लास को अपने कंस्ट्रक्टर में इन सभी गुणों को इन डिफ़ॉल्ट मानों के साथ इनिशियलाइज़ करना चाहिए (यानि __init__ मेथड कोई भी आर्ग्युमेंट स्वीकार नहीं करेगी)। क्लास में एक मेथड display भी शामिल होना चाहिए जो पुस्तक के वर्तमान गुणों को एक पढ़ने योग्य प्रारूप में प्रदर्शित करे। प्रारूप होना चाहिए: "Title: [title], Author: [author], Price: [price], Quantity in stock: [quantityinstock]".
प्रोग्राम फिर दो लाइन का इनपुट लेगा। पहली लाइन में एक गुण का नाम होगा (title, author, price, quantity_in_stock)। दूसरी लाइन में उस गुण का एक मान होगा।
आपके प्रोग्राम को इस नए मान को इनपुट में दिए गए गुण में असाइन करना चाहिए, और फिर Book ऑब्जेक्ट पर display मेथड को कॉल करके पुस्तक के वर्तमान गुणों को प्रिंट करना चाहिए।
इनपुट
आउटपुट
title
War and Peace
Title: War and Peace, Author: Unknown Author, Price: 0.0, Quantity in stock: 0