এটি সম্প্রতি আমাকে দু'বার কামড় দিয়েছে (আমি জানি আমার ভুল থেকে প্রথমবারের মতো শিখতে হবে) এবং গ্রহণযোগ্য উত্তরটি আমাকে এতটা সময় দেয়নি যখন আমার মনে তাজা থাকাকালীন আমি ভেবেছিলাম আমি ঠিক নিজের ক্ষেত্রে নিজের উত্তর জমা দেব অন্য কারও মধ্যে এটি চলছে (বা ভবিষ্যতে আমার এটি আবার দরকার)।
আমার ক্ষেত্রে বিষয়টি হ'ল আমি সাবক্লাসের সূচনাতে কোনও কাওয়ার্গ পাস করছিলাম তবে সুপারক্লাসে যে কীওয়ার্ড আরগটি তখন সুপার () কলের মধ্যে পাস করা হয়েছিল।
আমি সবসময় মনে করি যে এই ধরণের জিনিস একটি উদাহরণ দিয়ে সবচেয়ে ভাল:
class Foo(object):
def __init__(self, required_param_1, *args, **kwargs):
super(Foo, self).__init__(*args, **kwargs)
self.required_param = required_param_1
self.some_named_optional_param = kwargs.pop('named_optional_param', None)
def some_other_method(self):
raise NotImplementedException
class Bar(Foo):
def some_other_method(self):
print('Do some magic')
Bar(42)
Bar(42, named_optional_param={'xyz': 123})
সুতরাং এটি সমাধান করার জন্য আমাকে কেবল Foo .__ init__ পদ্ধতিতে যে জিনিসগুলি করা হয় তার ক্রমটি পরিবর্তন করতে হবে; যেমন:
class Foo(object):
def __init__(self, required_param_1, *args, **kwargs):
self.some_named_optional_param = kwargs.pop('named_optional_param', None)
super(Foo, self).__init__(*args, **kwargs)
self.required_param = required_param_1