1) selfপদ্ধতি স্বাক্ষরগুলিতে সুস্পষ্ট পরামিতি হিসাবে কেন প্রয়োজনীয়?
কারণ পদ্ধতিগুলি ফাংশন এবং foo.bar(baz)কেবল সিনট্যাকটিক চিনি bar(foo, baz)। ক্লাসগুলি কেবল অভিধান যেখানে কয়েকটি মানগুলি ফাংশন। (কনস্ট্রাক্টররাও কেবল ফাংশন, এজন্য পাইথনের প্রয়োজন নেই new) আপনি বলতে পারেন পাইথন এটি স্পষ্ট করে তোলে যে সহজ উপাদানগুলি থেকে অবজেক্টগুলি নির্মিত হয়েছিল। এটি "অন্তর্নিহিতের চেয়ে সুস্পষ্ট ভাল" - দর্শন অনুসারে।
বিপরীতে, জাভা অবজেক্টগুলিতে সত্যই যাদু এবং ভাষাতে সরল উপাদানগুলিতে হ্রাস করা যায় না। জাভাতে (কমপক্ষে জাভা 8 পর্যন্ত) কোনও ফাংশন সর্বদা কোনও জিনিসের মালিকানাধীন একটি পদ্ধতি এবং ভাষার স্থিত প্রকৃতির কারণে এই মালিকানা পরিবর্তন করা যায় না। সুতরাং যা thisবোঝায় সে সম্পর্কে কোনও অস্পষ্টতা নেই , সুতরাং এটি সুস্পষ্টভাবে সংজ্ঞায়িত করা বোধগম্য হয়।
জাভাস্ক্রিপ্ট একটি ভাষার উদাহরণ যা thisজাভার মতো অন্তর্নিহিত রয়েছে তবে যেখানে পাইথনের মতো বস্তুগুলি থেকে পৃথকভাবে ফাংশন উপস্থিত থাকতে পারে। এটি বিভিন্ন প্রসঙ্গে যখন ফাংশনগুলি চারপাশে পাস করা হয় এবং ডাকা হয় তখন কী বোঝায় সে সম্পর্কে প্রচুর বিভ্রান্তি thisঘটে। অনেক সহজাতভাবে মনে thisহয় ফাংশনটির কিছু অভ্যন্তরীণ সম্পত্তি বোঝাতে হবে, যখন এটি কার্যকরীভাবে ডাকা হয় তার মাধ্যমে খাঁটিভাবে নির্ধারিত হয়। আমি বিশ্বাস করি thisপাইথনের মতো স্পষ্ট প্যারামিটার হিসাবে থাকা এটিকে অনেক কম বিভ্রান্ত করে তুলবে।
সুস্পষ্ট- selfপরিমিতিটির কিছু অন্যান্য সুবিধা :
সাজসজ্জা শুধুমাত্র ফাংশন যা অন্যান্য ফাংশন মোড়ানো। যেহেতু পদ্ধতিগুলি কেবল ফাংশন, তাই সাজসজ্জাগুলি পদ্ধতিগুলির মতো ঠিক সূক্ষ্মভাবে কাজ করে। যদি কোনও ধরণের অন্তর্নিহিত স্ব থাকে তবে সাজসজ্জা পদ্ধতিতে স্বচ্ছভাবে কাজ করবে না।
শ্রেণিবদ্ধ এবং স্থির পদ্ধতিগুলি উদাহরণ প্যারামিটার নেয় না। শ্রেণিবদ্ধরা প্রথম যুক্তি হিসাবে সাধারণত একটি শ্রেণি নেয় (সাধারণত বলা হয় cls)। সুস্পষ্ট selfবা clsপরামিতিগুলি এটিকে আরও স্পষ্ট করে তোলে যা চলছে এবং পদ্ধতিতে আপনার কী অ্যাক্সেস রয়েছে।
2) কেন উদাহরণস্বরূপ ভেরিয়েবলগুলি সর্বদা "এর সাথে যোগ্য হতে হবে self.?
জাভাতে, আপনাকে " this." দিয়ে সদস্য ভেরিয়েবলগুলির উপসর্গের দরকার নেই , তবে পাইথন " self." এ সর্বদা প্রয়োজন। কারণটি হ'ল পাইথনের ভেরিয়েবলগুলি ঘোষণার জন্য সুস্পষ্ট সিনট্যাক্স নেই, সুতরাং কোনও x = 7নতুন স্থানীয় ভেরিয়েবল ঘোষণা করার বা সদস্য ভেরিয়েবলকে নির্ধারিত করার কথা বলার উপায় নেই । নির্দিষ্টকরণ self.এই অস্পষ্টতাকে সমাধান করে।