python oops concepts python classes
पायथन में ओओपी की अवधारणाएं: पायथन क्लासेस और ऑब्जेक्ट्स, इनहेरिटेंस, ओवरलोडिंग, ओवरराइडिंग और डेटा साइडिंग
पिछले ट्यूटोरियल में हमने कुछ इनपुट / आउटपुट संचालन वह पायथन प्रदान करता है।
हमें पता चला कि उपयोगकर्ता या बाहरी स्रोतों से डेटा पढ़ने के लिए इन कार्यों का उपयोग कैसे करना है और उन डेटा को बाहरी स्रोतों में कैसे लिखना है। इसके अलावा, हमने सीखा कि फ़ंक्शन का उपयोग करके एक विशाल कोड को छोटे तरीकों में कैसे विभाजित किया जाए और उन्हें कैसे कॉल या एक्सेस किया जाए।
आगे पढ़ना => फ्री पायथन प्रशिक्षण ट्यूटोरियल की स्पष्ट सीमा
इस ट्यूटोरियल में, हम उन्नत पायथन अवधारणा पर चर्चा करेंगे, जिसे ओओपी कहा जाता है और विभिन्न प्रकार की ऊप्स अवधारणाएँ हैं जो पायथन में उपलब्ध हैं और उनका उपयोग कैसे और कहाँ किया जाना है।
आप क्या सीखेंगे:
- वीडियो ट्यूटोरियल देखें
- वर्ग और वस्तुएँ
- पाइथन में कंस्ट्रक्टर
- विरासत
- पायथन में विधि ओवरलोडिंग
- पायथन में विधि ओवरराइडिंग
- पायथन में डेटा छिपाना
- निष्कर्ष
- अनुशंसित पाठ
वीडियो ट्यूटोरियल देखें
वीडियो # 1: पायथन में क्लास, ऑब्जेक्ट्स और कंस्ट्रक्टर
वीडियो # 2: पायथन में विरासत की अवधारणा
वीडियो # 3: अजगर में ओवरलोडिंग, ओवरराइडिंग और डेटा छिपाना
वर्ग और वस्तुएँ
- पाइथन एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज है, जहां प्रोग्रामिंग ऑब्जेक्ट्स पर अधिक जोर देती है।
- अजगर में लगभग सब कुछ वस्तुओं है।
कक्षाओं
पायथन में क्लास ऑब्जेक्ट्स का एक संग्रह है, हम एक क्लास को ब्लूप्रिंट या स्केच या प्रोटोटाइप के रूप में सोच सकते हैं। इसमें किसी वस्तु का पूरा विवरण होता है।
वास्तविक दुनिया के उदाहरण में, पशु एक वर्ग है, क्योंकि हमारे पास दुनिया में विभिन्न प्रकार के पशु हैं और ये सभी पशु वर्ग के हैं।
एक वर्ग को परिभाषित करना
पायथन में, हमें 'क्लास' कीवर्ड का उपयोग करके एक वर्ग को परिभाषित करना चाहिए।
वाक्य - विन्यास:
class classname: #Collection of statements or functions or classes
उदाहरण:
class MyClass: a = 10 b = 20 def add(): sum = a+b print(sum)
उपरोक्त उदाहरण में, हमने 'माईक्लास' नामक वर्ग की घोषणा की है और हमने क्रमशः कुछ चर और कार्यों को घोषित और परिभाषित किया है।
वर्ग के अंदर मौजूद उन कार्यों या चर को एक्सेस करने के लिए, हम इसका एक ऑब्जेक्ट बनाकर वर्ग नाम का उपयोग कर सकते हैं।
पहले, आइए देखें कि वर्ग नाम का उपयोग करने वालों तक कैसे पहुँचा जाए।
उदाहरण:
class MyClass: a = 10 b = 20 #Accessing variable present inside MyClass print(MyClass.a)
उत्पादन
१०
एमपी 3 कनवर्टर करने के लिए मुफ्त सरल यूट्यूब
आउटपुट:
वस्तुओं
एक वस्तु आमतौर पर एक वर्ग का एक उदाहरण है। इसका उपयोग कक्षा के अंदर मौजूद हर चीज तक पहुंचने के लिए किया जाता है।
एक वस्तु बनाना
वाक्य - विन्यास:
variablename = classname
उदाहरण:
ob = MyClass()
यह will ob ’नामक एक नई आवृत्ति ऑब्जेक्ट बनाएगा। इस ऑब्जेक्ट नाम का उपयोग करके हम वर्ग MyClass के अंदर मौजूद सभी विशेषताओं तक पहुँच सकते हैं।
उदाहरण:
class MyClass: a = 10 b = 20 def add(self): sum = self.a + self.b print(sum) #Creating an object of class MyClass ob = MyClass() #Accessing function and variables present inside MyClass using the object print(ob.a) print(ob.b) ob.add()
आउटपुट:
१०
बीस
३०
आउटपुट:
पाइथन में कंस्ट्रक्टर
पायथन में कंस्ट्रक्टर एक विशेष विधि है जिसका उपयोग किसी वर्ग के सदस्यों को रन-टाइम के दौरान किसी ऑब्जेक्ट के निर्माण के लिए इनिशियलाइज़ करने के लिए किया जाता है।
पायथन में, हमारे पास कुछ विशेष अंतर्निहित वर्ग विधियां हैं जो एक डबल अंडरस्कोर (__) से शुरू होती हैं और उनका पायथन में एक विशेष अर्थ है।
कंस्ट्रक्टर का नाम हमेशा __init __ () होगा।
हर वर्ग के पास एक कंस्ट्रक्टर होना चाहिए, भले ही आप स्पष्ट रूप से एक कंस्ट्रक्टर न बनाएं, यह एक डिफ़ॉल्ट कंस्ट्रक्टर खुद ही बना देगा।
उदाहरण:
class MyClass: sum = 0 def __init__ (self, a, b): self.sum = a+b def printSum(self): print(“Sum of a and b is: ”, self.sum) #Creating an object of class MyClass ob = MyClass(12, 15) ob.printSum()
आउटपुट:
A और b का योग है: 27
आउटपुट:
यदि हम उपरोक्त उदाहरण में निरीक्षण करते हैं, तो हम __init __ () विधि को नहीं बुला रहे हैं, क्योंकि यह स्वचालित रूप से तब कहा जाएगा जब हम उस वर्ग में कोई ऑब्जेक्ट बनाते हैं और यदि कोई हो तो डेटा सदस्यों को इनिशियलाइज़ करते हैं।
हमेशा याद रखें कि एक निर्माता किसी भी मूल्य को कभी नहीं लौटाएगा, इसलिए इसमें कोई रिटर्न स्टेटमेंट शामिल नहीं है।
विरासत
विरासत OOPs की सबसे शक्तिशाली अवधारणाओं में से एक है।
एक वर्ग जो दूसरे वर्ग के गुणों को विरासत में देता है उसे इनहेरिटेंस कहा जाता है।
जिस वर्ग को गुण विरासत में मिलते हैं, उसे बाल वर्ग / उपवर्ग कहा जाता है और जिस वर्ग से संपत्ति विरासत में मिलती है उसे मूल वर्ग / आधार वर्ग कहते हैं।
अजगर तीन प्रकार के वंशानुक्रम प्रदान करता है:
- एकल वंशानुक्रम
- मल्टीलेवल इनहेरिटेंस
- एकाधिक वंशानुक्रम
अनुशंसित पढ़ना = >> जावा में वंशानुक्रम
(1) एकल वंशानुक्रम
एकल वंशानुक्रम में, एक वर्ग केवल एक वर्ग के गुणों को प्राप्त करेगा।
उदाहरण:
class Operations: a = 10 b = 20 def add(self): sum = self.a + self.b print(“Sum of a and b is: “, sum) class MyClass(Operations): c = 50 d = 10 def sub(self): sub = self.c – self.d print(“Subtraction of c and d is: ”, sub) ob = MyClass() ob.add() ob.sub()
आउटपुट:
A और b का योग है: 30
C और d का घटाव है: 40
आउटपुट:
उपर्युक्त उदाहरण में, हम 'क्लास' के वर्ग के गुणों को 'मायक्लास' श्रेणी में प्राप्त कर रहे हैं।
इसलिए, हम MyClass ऑब्जेक्ट्स का उपयोग करके ’ऑपरेशंस 'क्लास में मौजूद सभी तरीकों या स्टेटमेंट तक पहुँच सकते हैं।
# 2) मल्टीलेवल इनहेरिटेंस
बहुस्तरीय विरासत में, एक या एक से अधिक वर्ग आधार वर्ग के रूप में कार्य करते हैं।
जिसका अर्थ है कि दूसरा वर्ग प्रथम श्रेणी के गुणों को प्राप्त करेगा और तीसरा वर्ग द्वितीय श्रेणी के गुणों को प्राप्त करेगा। तो दूसरा वर्ग पेरेंट क्लास के साथ-साथ चाइल्ड क्लास दोनों का काम करेगा।
उदाहरण:
class Addition: a = 10 b = 20 def add(self): sum = self.a + self.b print(“Sum of a and b is: ”, sum) class Subtraction(Addition): def sub(self): sub = self.b-self.a print(“Subtraction of a and b is: ”, sub) class Multiplication(Subtraction): def mul(self): multi = self.a * self.b print(“Multiplication of a and b is: ”, multi) ob = Multiplication () ob.add() ob.sub() ob.mul()
आउटपुट:
A और b का योग है: 30
ए और बी का घटाव है: १०
A और b का गुणनफल: 200 है
आउटपुट:
उपरोक्त उदाहरण में, क्लास raction सबट्रेक्शन ’में क्लास’ एडिशन ’के गुण पाए जाते हैं और क्लास ip मल्टीप्लीकेशन’ में क्लास raction सबट्रैक्शन ’के गुण होंगे। इसलिए वर्ग ‘घटाव’ बेस क्लास और व्युत्पन्न वर्ग दोनों के रूप में कार्य करेगा।
# 3) एकाधिक वंशानुक्रम
जिस वर्ग को कई वर्गों के गुण विरासत में मिलते हैं, उसे एकाधिक वंशानुक्रम कहा जाता है।
आगे पढ़ना = >> क्या जावा मल्टीपल इनहेरिटेंस का समर्थन करता है?
उदाहरण:
class Addition: a = 10 b = 20 def add(self): sum = self. a+ self.b print(“Sum of a and b is: “, sum) class Subtraction(): c = 50 d = 10 def sub(self): sub = self.c-self.d print(“Subtraction of c and d is: ”, sub) class Multiplication(Addition,Subtraction): def mul(self): multi = self.a * self.c print(“Multiplication of a and c is: ”, multi) ob = Multiplication () ob.add() ob.sub() ob.mul()
आउटपुट:
A और b का योग है: 30
C और d का घटाव है: 10
A और c का गुणनफल: 500 है
आउटपुट:
पायथन में विधि ओवरलोडिंग
एक ही नाम वाले कई तरीके लेकिन एक अलग प्रकार के पैरामीटर या एक अलग संख्या के मापदंडों के साथ विधि को ओवरलोडिंग कहा जाता है
उदाहरण:
def product(a, b): p = a*b print(p) def product(a, b, c): p = a*b*c print(p) #Gives you an error saying one more argument is missing as it updated to the second function #product(2, 3) product(2, 3, 5)
आउटपुट:
३०
आउटपुट:
आउटपुट:
पाइथन में मेथड ओवरलोडिंग का समर्थन नहीं किया गया है, क्योंकि यदि हम उपर्युक्त उदाहरण में देखते हैं कि हमने एक ही नाम 'उत्पाद' के साथ दो कार्यों को परिभाषित किया है, लेकिन विभिन्न मापदंडों के साथ।
लेकिन पायथन में, नवीनतम परिभाषित अपडेट हो जाएगा, इसलिए फ़ंक्शन उत्पाद (ए, बी) बेकार हो जाएगा।
पायथन में विधि ओवरराइडिंग
यदि एक उपवर्ग विधि का वही नाम है जिसे सुपरक्लास विधि में घोषित किया जाता है तो उसे विधि अधिलेखना कहा जाता है
ओवरराइडिंग विधि प्राप्त करने के लिए हमें विरासत का उपयोग करना चाहिए।
उदाहरण:
class A: def sayHi(): print(“I am in A”) class B(A): def sayHi(): print(“I am in B”) ob = B() ob.sayHi()
आउटपुट:
म B हूं
आउटपुट:
पायथन में डेटा छिपाना
डेटा छिपाना का अर्थ है डेटा को निजी बनाना ताकि यह अन्य वर्ग के सदस्यों के लिए सुलभ न हो। इसे केवल उस कक्षा में पहुँचा जा सकता है जहाँ इसे घोषित किया गया है।
अजगर में, यदि हम चर को छिपाना चाहते हैं, तो हमें चर नाम से पहले डबल अंडरस्कोर (__) लिखना होगा।
उदाहरण:
Class MyClass: __num = 10 def add(self, a): sum = self.__num + a print(sum) ob = MyClass() ob.add(20) print(ob.__num) #The above statement gives an error because we are trying to access private variable outside the class
आउटपुट:
३०
ट्रेसबैक (सबसे हालिया कॉल अंतिम):
फ़ाइल 'DataHiding.py', पंक्ति 10, में
प्रिंट करें (चाहे देय हो ।__)
विशेषता: MyClass का उदाहरण है
कोई विशेषता नहीं attribute attributenum
आउटपुट:
निष्कर्ष
क्लास एक ब्लूप्रिंट या टेम्प्लेट है जिसमें किसी ऑब्जेक्ट का सारा विवरण होता है, जहाँ ऑब्जेक्ट एक क्लास का एक उदाहरण है।
- यदि हम किसी अन्य वर्ग के गुणों को एक वर्ग में लाना चाहते हैं, तो यह विरासत द्वारा प्राप्त किया जा सकता है।
- इनहेरिटेंस 3 प्रकार का होता है- सिंगल इनहेरिटेंस, मल्टीलेवल इनहेरिटेंस और मल्टीपल इनहेरिटेंस।
- पाइथन में मेथड ओवरलोडिंग समर्थित नहीं है।
- ओवरराइडिंग विधि का उपयोग उसी फ़ंक्शन के कार्यान्वयन को ओवरराइड करने के लिए किया जाता है जो किसी अन्य वर्ग में परिभाषित किया गया है।
- हम डेटा विशेषताओं को निजी बना सकते हैं या उन्हें छिपा सकते हैं ताकि यह उस कक्षा के बाहर सुलभ न हो जहां इसे परिभाषित किया गया है।
हमारे आगामी ट्यूटोरियल अतिरिक्त पायथन अवधारणाओं के बारे में विस्तार से बताएंगे !!
PREV ट्यूटोरियल | अगले ट्यूटोरियल
अनुशंसित पाठ
- अजगर चर
- उदाहरणों के साथ पायथन डेटटाइम ट्यूटोरियल
- पायथन स्ट्रिंग फ़ंक्शंस
- पायथन ट्यूटोरियल फॉर बिगिनर्स (हैंड्स-ऑन फ्री पायथन ट्रेनिंग)
- पायथन कंट्रोल स्टेटमेंट (पायथन जारी, ब्रेक और पास)
- पायथन ऑपरेटर्स
- पायथन कार्य
- पायथन परिचय और स्थापना प्रक्रिया