উত্তর:
ডিফল্ট আর্গুমেন্ট মানগুলি ফাংশন সংজ্ঞায়িত সময়ে মূল্যায়ন করা হয়, তবে self
এটি একটি যুক্তি যা কেবল ফাংশন কল সময়ে উপলভ্য। সুতরাং যুক্তি তালিকার যুক্তিগুলি একে অপরকে রেফার করতে পারে না।
কোডটিতে সেইটির জন্য একটি যুক্তি ডিফল্ট করা None
এবং এটির জন্য একটি পরীক্ষা যুক্ত করা সাধারণ প্যাটার্ন
def p(self, b=None):
if b is None:
b = self.a
print b
আপনি যে কোনও ক্ষেত্রে 'বি' সেট করার বিকল্পটি পেতে চান এমন ক্ষেত্রে:
def p(self, **kwargs):
b = kwargs.get('b', self.a)
print b
আপনি যদি গুগলের মাধ্যমে এখানে পৌঁছে থাকেন তবে অনুগ্রহ করে নিশ্চিত হয়ে নিন যে আপনি কোনও ক্লাস ফাংশনে প্রথম প্যারামিটার হিসাবে স্ব স্ব দিয়েছেন। বিশেষত যদি আপনি ফাংশনের ভিতরে সেই অবজেক্টের জন্য মানগুলি উল্লেখ করার চেষ্টা করেন।
def foo():
print(self.bar)
> নামের ত্রুটি: নাম 'স্ব' সংজ্ঞায়িত করা হয় না
def foo(self):
print(self.bar)