পাইথন ডকুমেন্টেশন পাইথন টিউটোরিয়ালে সমস্ত ব্যাখ্যা পাওয়া যায়
আপনার প্রথম ত্রুটির জন্য <type 'exceptions.NameError'>: name 'outer_var' is not defined
। ব্যাখ্যাটি হ'ল:
পদ্ধতিগুলির মধ্যে থেকে ডেটা অ্যাট্রিবিউটগুলি (বা অন্যান্য পদ্ধতি!) রেফারেন্স দেওয়ার জন্য কোনও শর্টহ্যান্ড নেই। আমি দেখতে পাচ্ছি যে এটি প্রকৃতপক্ষে পদ্ধতির পাঠযোগ্যতা বৃদ্ধি করে: কোনও পদ্ধতির মাধ্যমে ঝলক দেওয়ার সময় স্থানীয় ভেরিয়েবল এবং উদাহরণের ভেরিয়েবলগুলিকে বিভ্রান্ত করার কোনও সম্ভাবনা নেই।
পাইথন টিউটোরিয়াল থেকে উদ্ধৃত 9.4
আপনার দ্বিতীয় ত্রুটির জন্য <type 'exceptions.NameError'>: name 'OuterClass' is not defined
যখন শ্রেণীর সংজ্ঞাটি সাধারণত (শেষের মাধ্যমে) ছেড়ে যায়, তখন একটি শ্রেণি অবজেক্ট তৈরি হয়।
পাইথন টিউটোরিয়াল থেকে উদ্ধৃত 9.3.1
সুতরাং যখন আপনি চেষ্টা করবেন inner_var = Outerclass.outer_var
, Quterclass
এখনও তৈরি করা হয়নি, এজন্যইname 'OuterClass' is not defined
আপনার প্রথম ত্রুটির জন্য আরও বিস্তারিত তবে ক্লান্তিকর ব্যাখ্যা:
যদিও ক্লাসগুলির মধ্যে এনকোলেজিং ফাংশনগুলির স্কোপগুলি অ্যাক্সেস রয়েছে, তবে, তারা শ্রেণীর অভ্যন্তরে কোডযুক্ত কোডগুলি স্কোপগুলি ঘেরানো হিসাবে কাজ করে না: পাইথন রেফারেন্সড নামগুলির জন্য এনকোলেজিং ফাংশনগুলি সন্ধান করে, তবে কোনও ক্লোটিং ক্লাস কখনও নয়। এটি হল, কোনও শ্রেণি একটি স্থানীয় সুযোগ এবং এতে স্থানীয় স্কোপগুলি ঘেরে প্রবেশাধিকার রয়েছে তবে এটি আরও নেস্টেড কোডগুলিকে একটি ঘেরযুক্ত স্থানীয় সুযোগ হিসাবে পরিবেশন করে না।
লার্নিং থেকে উদ্ধৃত। পাইথন (5 ম) .মার্ক.লুটজ