এই ধরণের ত্রুটি দেখা দিলে অন্য কিছু বিবেচনা করা উচিত:
আমি এই ত্রুটি বার্তায় চলেছিলাম এবং এই পোস্টটিকে সহায়ক বলে মনে করি। আমার ক্ষেত্রে দেখা যাচ্ছে যে আমি __init__()
সেখানে এমন কোনও জিনিসকে ওভাররাইড করেছিলাম যেখানে বস্তুর উত্তরাধিকার ছিল।
উত্তরাধিকার সূত্রে প্রাপ্ত উদাহরণটি দীর্ঘ, সুতরাং আমি উত্তরাধিকার ব্যবহার না করে এমন একটি আরও সাধারণ উদাহরণ এড়িয়ে যাব:
class MyBadInitClass:
def ___init__(self, name):
self.name = name
def name_foo(self, arg):
print(self)
print(arg)
print("My name is", self.name)
class MyNewClass:
def new_foo(self, arg):
print(self)
print(arg)
my_new_object = MyNewClass()
my_new_object.new_foo("NewFoo")
my_bad_init_object = MyBadInitClass(name="Test Name")
my_bad_init_object.name_foo("name foo")
ফলাফলটি হ'ল:
<__main__.MyNewClass object at 0x033C48D0>
NewFoo
Traceback (most recent call last):
File "C:/Users/Orange/PycharmProjects/Chapter9/bad_init_example.py", line 41, in <module>
my_bad_init_object = MyBadInitClass(name="Test Name")
TypeError: object() takes no parameters
পাইচার্ম এই টাইপটি ধরেনি। বা নোটপ্যাড ++ (অন্যান্য সম্পাদক / আইডিইর শক্তিমান) নেই।
মঞ্জুর, এটি একটি "কোনও প্যারামিটার নেয় না" টাইপ এরির, পাইথনের অবজেক্ট ইনিশিয়ালেশনের ক্ষেত্রে এটি প্রত্যাশার ক্ষেত্রে "দুটি পেয়েছি" এর চেয়ে অনেক বেশি আলাদা নয়।
বিষয়টিকে সম্বোধন করা: সিনট্যাক্টিক্যালি সঠিকভাবে একটি ওভারলোডিং ইনিশিয়ালাইজার ব্যবহার করা হবে তবে তা যদি না উপেক্ষা করা হয় এবং পরিবর্তে বিল্ট-ইন ব্যবহার করা হবে। অবজেক্টটি এটি আশা / হ্যান্ডেল করবে না এবং ত্রুটি নিক্ষেপ করা হবে।
সিট্যাক্স ত্রুটির ক্ষেত্রে: ফিক্সটি সহজ, কেবল কাস্টম আরডি স্টেটমেন্টটি সম্পাদনা করুন:
def __init__(self, name):
self.name = name
self
। সুতরাং ঘোষণাdef method(arg):
কোনও পদ্ধতির জন্য ভুল, এটি হওয়া উচিতdef method(self, arg):
। যখন পদ্ধতি প্রেরণটি কল করার জন্যmethod(arg):
এবং এরself, arg
বিপরীতে দুটি পরামিতি মেলে দেখার চেষ্টা করে, আপনি সেই ত্রুটি পান।