0:00
आज के इस वीडियो में मैं आप लोगों को बताऊंगा कि पाइथन प्रोग्रामिंग में जब आप इनेडिटेंस करते हैं और फिर ऑब्जेक्ट रेंटेड प्रोग्रामिंग करते हैं तो access specifiers किस तरह से काम करते हैं और क्या exact rules हैं इन सबको लेके थोड़ी सी चीज़े हैं ��
0:30
कोई चीज नहीं होती है, सबसे पहले मैं यह बता दो आप लोगों को, मैं यह कोई मूवी नहीं है
0:33
जो मैं आपको spoilers जो यहाँ पर दे रहा हूँ, मैं आपको concept भी बात बता रहा हूँ, लेकिन उसके बाद भी हम लोग private variables, public variables, protected variables
0:41
की बात करते हैं पाइथन में तो यह क्या मतलब सीन क्या आपको गया एक जगह आप कह रहे हो कि होते नहीं है पाइथन में पब्लिक प्राइवेट प्रोटेक्टेड और दूसरी जगह आप लोग कह रहे हो कि हम बात करते हैं उनकी तो यह क्या चल रहा है जब access modifiers की बात होती ��
1:11
तो उसके variables by default तो public होते हैं, लेकिन हम उन्हें private भी बना सकते हैं
1:16
private बना दिया, मैं in general object oriented programming की बात कर रहा हूँ
1:20
by the way यह आपको बता दूं, यह अभी यहाँ पर python को एक minute के लिए side में रखते हैं
1:24
in general object oriented programming की बात कर रहे हैं, किसी भी language में अगर आप लोग object oriented programming के बारे में अगर सुनते हो त��
1:29
public का मतलब अगर मैंने बाहर से class के access के मालो मैंने class बनाई यहाँ पर थोड़ा code लिखके दिखाता हूँ आपक��
1:36
मालो मैंने यहाँ पर class बनाई employee और इसके बाद इसके अंदर मैंन��
1:41
मान लो मैं यहाँ पर pass लिखता हूँ pass pass मतलब कुछ नहीं ठीक ह��
1:46
अब मैं कहता हूँ a is equal to employee मैंने employee का एक instance बना दिय��
1:51
ठीक है एक object बना दिया employee से अब अगर मैं कहता हूँ a.emp1
1:56
is equal to और मैं लिखता हूँ 5 और मैं इसको access करने की कोशिश करता हू��
2:01
a.emp1 को तो होगा क्या कि यहाँ पर जब मैं a.emp1 को access करूँगा तो वो हो जाएगा तो by default यह public है access किया जा सकता है बाहर स��
2:10
private बाहर से access नहीं किये जा सकते protected जो है वो class के अंदर से access किये जा सकते है और sub class से access किये जा सकते ह��
2:19
यानि कि child class से access की जा सकते हैं अब python पर आते है��
2:22
कि python में ये जो access modifiers होते हैं public, private, protected वो होते भी क्यों हैं और क्यों नहीं होते है��
2:28
ठीक है तो मैं अभी इस code को ऐसे रखूँगा और यहाँ पर access specifiers की बात करूँग��
2:32
access modifiers in python programming are used to limit the access of class variables
2:37
and class methods outside of class while implementing the concepts of inheritance
2:41
अब types of access specifiers की बात करते हैं हमारे पास public access modifier होता ह��
2:44
private होता है protected होता है ठीक है अब यहाँ पर सबसे पहले public access modifier की बात करते है��
2:50
variables public python underscore underscore init underscore underscore self method
3:20
नेम को एक्सेस करने की कोशिश करूंगा और मैं कर पाऊंगा यार क्योंकि पब्लिक होता है बाइटिफॉल्ड एक्सेसेसेबल फ्रॉ��
3:25
outside होता है तो बाय डिफॉल्ट कुछ भी आप बनाते हो बाय थे में वह एक्सेसेबल होता है फ्रॉम आउटसाइड ठीक ह��
3:31
तो ऑल द वेरिबल्स एंड मेथड्स इन पाइटन आफ बाय डिफॉल्ट पब्लिक एनी इंस्टेंस इन अ क्लास फॉल्ड बाय सेल्��
3:37
that is self.variable name are publicly accessible जैसे कि हमने देखा name publicly accessible थ��
3:42
हम access कर पा रहे हैं इसको ठीक है एक example मैंने यहाँ पर दिया हुआ जो कि आप लोग try out कर सकते ह��
3:47
इसमें दो variables हैं age को भी हम access कर पा रहे हैं name को भी access कर पा रहे हैं ठीक ह��
3:51
अब यहाँ पर मैं आप लोग को access modifier के बारे में बताता हू��
3:55
private access modifier के बारे में देखो by definition अगर हम बात करें ओप्स में तो private का मतलब कि भाई access नही��
4:01
किये जा सकें तो private का मतलब है कि access नहीं किये जा सकें तो अगर हम लो��
4:07
double underscore से prefix कर देते हैं किसी भी variable को जिसे कि यहाँ पर अगर मालो मै��
4:10
self.double underscore कर दूं, तो मैं इसको अक्सेस नहीं कर पाऊंगा, ठीक है
4:15
तो यहाँ पर इस बात को आप लोग समझना, पहले तो मैं कह रहा हूँ कि अक्सेस नहीं कर पाऊंगा
4:19
क्योंकि यहाँ पर error आ रहा है, आप देख सकते हो मैं अक्सेस नहीं कर पा रहा हूँ, However, a convention has been established to indicate that the variable or method should be considered private by prefixing its name with a double underscore
4:48
डबल अंडरस्कोर लगाने से क्या होगा, कि एक weak internal use indicator होगा ये, कि ये private variable है
4:54
लेकिन access फिर भी हो जाएगा, ये भी बताओंगा थोड़ी दर में कैसे, लेकिन एक तरह से हमने indicate कर दिया, हमने संकेद दिया
4:59
आपको जैसे समझ लो कि आपने अपनी गाड़ी खड़ी करी बिना ताले के और आपने अपनी गाड़ी खड़ी करी बिना ताले के और एक नोट लगा दिया इस गाड़ी को कोई न चू��
5:05
लेकिन चूतो सकता है न कोई भी आपने note लगा दिया तो उसको कोई ओबे करे ना करे ये तो उसके ऊपर depend करता ह��
5:11
लेकिन आपने आपसे को ये नहीं कह सकता कि मुझे मालूम नहीं था कि आपकी गाड़ी को चूना नहीं है तो आप note लगा सकते हो ठीक ह��
5:17
तो एक तरह से हमने note लगा दिया यह double underscore करके indication लगा दिय��
5:20
अब आप कहोगे लेकिन access तो कर नहीं पा रहे हैं access कैसे करेंगे access करने के लिए आपने simple क्या करना ह��
5:26
आपने यहाँ पर कुछ इस तरह से use करना है इसको तो मैं आपको सबसे बताता हूं किस तरह से यूज करना है आपने क्लास अंडरस्कोर फिर क्लास का नाम फिर डब��
5:35
अंडरस्कोर और आट्रेब्यूट का नाम ठीक है तो मैं बताता हूं आपको कैसे इसको एक्सेस करना ऐसे तो एक्सेस नही��
5:39
cannot be accessed directly can be accessed indirectly access Harry print Harry 2 Harry 2 print definitely can be accessed indirectly
6:16
name mangling क्या होता है, name mangling आपको बताता हूँ, तो देखो, name mangling में क्या होता है, कि जो हमारा directly private attribute है, उसका नाम एक तरह से बदल के रख दिया जाता है, ठीक है, उससे भी बहुत आप लोग को एक बात बताता हूँ
6:32
अगर मैं यहां पर लिखो एडवर्ट अंडरस्कोर अंडरस्कोर डी आई आर तो एक ऊपर जो जो मैथड्स और जो जो वेरिबल्��
6:41
रन की जा सकते हैं एक मैथड में इसको रन करना पड़ेगा डीआर मेथड को एडवर्ट अंडरस्कोर अंडरस्कोर डीआर अग��
6:47
तो देखो यह देखो यहाँ पर यह आ गया मेरा एक attribute यह method यह method जो जो methods
6:53
उपलब्द है वो सारे यहाँ पर आप देख सकते हो मुझे देखने को मिल रहे हैं तो सारे attributes औ��
6:58
methods मुझे यहाँ देखने को मिल रहे हैं इसमें underscore employee underscore underscore name भी है तो होगा क्य��
7:03
या name mangling का concept अब समझो, name mangling Python में एक technique होती है
7:07
which is used to protect, used to protect class private, and subclass private attributes
7:12
from being accidentally overwritten, अब कोई accidentally इनको override कर सकता है
7:16
underscore, underscore, underscore name से access करके, तो वो accidentally override ना करे
7:20
इसलिए name mangling कर दी जाती है, जो name है, उसको कुछ इस तरह से बना दिये जाता है
7:24
such that उसमें class का नाम underscore के बाद आए और उसके बाद underscore underscore वाला attribute आ��
7:28
तो इस तरह से single leading underscore and double leading underscore लगा दिया जाता ह��
7:34
ठीक है इस तरह से आप जो है इसको access कर पाओगे indirectly
7:39
तो ये name mangling का concept है इस example में आप देख सकते हो क��
7:42
underscore private underscore attribute जो है वो private by convention mark किया गया ह��
7:47
यहाँ पर आप देख सकते हो, तो नीचे मैंने एक example दिया हुआ, जिसको आप लोग definitely run करके देखना खुद से, लेकिन अब मैं आप पर जाऊँगा protected access modifier के बारे में, मैं दुबारा आप लोग को remind करा दूँ कि Python में public private protected का कोई concept नहीं है, यह just convention है, जिसको लोग use करते हैं as public private protected
8:17
इन ऑब्जेक्ट वे प्रोग्रामिंग प्रोटेक्ट इज यूज डिस्टाइब अमें बराफर क्लास एडिट डेड इज इन्डेंडिट टू ब��
8:23
अपने क्लास एट्स एल्ब एंड इट सब क्लास इस इन पाइटन द कन्वेंशन फॉर इंडिकेटिंग दाट इस बाय यूजिं��
8:30
सिंगल अंडरस्कोर आप लोग अगर सिंगल अंडरस्कोर यूज करते हो मैं काम करता हूं यह ना जो स्टूडेंट वाले एग्जाम्प��
8:36
object class fun name function name subject class inherit student object student
8:53
और एक हमने यहाँ पर subject का बनाया ठीक है subject और student दोरों के एक object बनाया ह��
8:58
तो आप देखो यहाँ पर मैं directly इसको access कर पा रहा हूँ मैंने obj.underscore name किया अग��
9:03
तो मैं directly access कर पा रहा हूँ और मैंने obj.underscore fun name किया तो मैं directly access कर पा रहा हू��
9:09
तो पाइथन की तरफ से कोई भी ऐसा नहीं है कि पाइथन इनफोर्स कर रहा है इस चीज़ क��
9:13
इन फाक्ट अगर मैं यहाँ पर प्रेंट करूँ DIR of OBJ या फिर मैं OBJ.__DIR_
9:19
opening closing parenthesis भी लगा सकता था वो थोड़ा लंबा पड़ जात��
9:22
तो मैंने यहाँ पर DIR इसका print किया तो आप लोग यहाँ पर देखो जो OBJ है हमारा उसमें हमको underscore name मिल जाएगा आपको दिखाता हूँ यहाँ प��
9:30
underscore name मुझे क्यों नहीं दिख रहा है यार अब भी दिखाता हूँ आपको मैं कहां होतो हूँ underscore name मिल जा��
9:39
underscore name यहाँ at the end तो underscore name है तो यहाँ पर mangling नहीं की जाती ह��
9:44
तो आप लोग directly इसको access कर सकते हो but यह convention की तरह use किया जाता ह��
9:48
कभी कभी conventions जो है अलग लग लोग अलग लग convention भी use करते है��
9:52
जैसे कि मान लो आप किसी एक बड़े company के साथ एक project पर काम कर रहे हो तो हो सकता है कि आपको guidelines कुछ इस तरह से दी जाएं कि या��
9:59
जो हमारा underscore वाला variable है वो हम use करेंगे double underscore हम use नहीं करेंग��
10:04
हम mangling वाला approach यूज़ नहीं कर रहे हैं underscore वाले variable को आपको private treat करना ह��
10:10
या ये कहा जा सकता है तो ऐसा नहीं आप ये मत कहना कि यार है है भाई ने तो प्रोटेक्ट बदला था इंडरस्कोर वाला आप रायर की बताया यह कन्वेंशन एडॉप्ट किया जा सकत��
10:19
है पाइटन कुछ इन पोर्ट नहीं करता है पाइटन बस डबल इंडरस्कोर जहां भी लगाओगे वह मैंगलिंग कर देग��
10:23
पाकि यहाँ पर underscore आप लगा रहे हो directly access करो, बाकि आपके internal
10:27
convention के उपर है, ठीक है, यह just एक convention है, double underscore
10:31
लगाने से mangling हो जाएगी, double underscore लगा दे रहे हो, directly access नहीं कर सकते, ठीक ह��
10:35
अब python कहते हैं, आप अपने हिसाब से देख लो अपने हिसाब से guidelines and ports कर ल��
10:39
अपने हिसाब से जो करना है कर लो public private protected का concept python में बस इतना ही ह��
10:44
कि double underscore लगाया तो mangling होगी बागी सब normal है एकदम normal है ठीक ह��
10:48
तो यहाँ पर अपने हिसाब से जो लोग है वो adopt कर सकते हैं चीज़ों क��
10:52
यहाँ पर देखो it's important to note that the single underscore is just a naming convention
10:57
and does not actually provide any protection or restrict access to the member
11:01
टीवर दिसेंट एक्सी फॉलोड टो मेक वरिएबल प्रोटेक्टेड इस टो राइट वरिएबल नेम फॉलोड बाई fatigue तीव��
11:07
अगर सिंगल इंडिस्कोर लगा दिया डिलेक्टली एक्सेस आप कर पाऊंगे आई ह dual को समझ में आया मजा आया ठी��
11:13
अगर आपने playlist अभी तक access नहीं करी तो इसको जरूर से access करें अभी के लिए इस वीडियो में इतना है guys
11:17
thank you so much guys for watching this video and I will see you next time