البرمجة

حل مشكلة AttributeError في Python

في البداية، دعوني أوضح لكم ما يحدث في الشفرة التي قدمتها. تقوم الشفرة بتعريف فئة تسمى “simple” تحتوي على مُنشئ (constructor) يبدو أنه يعمل بشكل صحيح. هذا المنشئ يقوم بتعيين قيمة لمتغير داخلي يُسمى “s” بناءً على المعطى الذي تم تمريره عند إنشاء الكائن. ومن ثم، هناك طريقتان مُعرفتان داخل الفئة، الأولى تسمى “show” والثانية “showMsg”.

المشكلة الرئيسية تكمن في طريقة تعريف الدوال داخل الفئة. تم وضع تعريفات “show” و”showMsg” خارج الفئة، لذا فإنها ليست جزءًا منها بل تعتبر دوالًا مستقلة. وعند محاولة استدعاء هذه الدوال بواسطة الكائن x، فإن Python لن يجدها كجزء من الفئة، وبالتالي ستحدث الخطأ الذي ذكرته.

لحل هذا الخطأ، يجب تعريف الدوال داخل الفئة بشكل صحيح. يمكنك فعل ذلك عن طريق وضع تعريفات “show” و”showMsg” داخل كتلة الفئة، بحيث تصبح جزءًا منها. وبعد ذلك، يمكنك استدعاء هذه الدوال باستخدام الكائن x بشكل صحيح.

إليك الشفرة مع التعديلات اللازمة:

python
class simple: def __init__(self, str): print("inside the simple constructor") self.s = str # تعريف الدالة show داخل الفئة def show(self): print(self.s) # تعريف الدالة showMsg داخل الفئة def showMsg(self, msg): print(msg + ":", self.show()) if __name__ == "__main__": # create an object: x = simple("constructor argument") # استدعاء الدالة show x.show() # استدعاء الدالة showMsg x.showMsg("A message")

بعد تحريك تعريفات الدوال داخل الفئة، يجب أن يعمل الشيفرة بشكل صحيح دون أي أخطاء. سيقوم الكود الآن بطباعة القيمة التي تم تمريرها إلى المتغير “s” عند إنشاء الكائن، ثم سيقوم بطباعة الرسالة التي تم تمريرها إلى دالة “showMsg” بجانب القيمة التي تم طباعتها بواسطة دالة “show”.

المزيد من المعلومات

بالطبع، سأواصل إكمال المقال لشرح المشكلة وكيف تم حلها:

من الواضح الآن أن السبب الرئيسي وراء الخطأ الذي حدث هو وضع تعريفات الدوال خارج الفئة بدلاً من تعريفها داخلها. هذا الخطأ شائع في Python وقد يتسبب في الكثير من المشاكل الصعبة في تتبعها وحلها، ولكنه يمكن حله بسهولة عن طريق تنظيم الشفرة بشكل صحيح.

بعد التعديلات، يمكننا الآن فهم كيفية عمل الشفرة بشكل أفضل. عند إنشاء كائن من الفئة “simple” باستخدام السطر “x = simple(“constructor argument”)”، سيتم تنفيذ المنشئ (constructor) أولاً. هذا المنشئ سيعين قيمة للمتغير الداخلي “s” بناءً على المعطى الذي تم تمريره.

ثم، بمجرد أن يتم إنشاء الكائن، يمكننا استدعاء الدوال المعرفة داخل الفئة باستخدام هذا الكائن. على سبيل المثال، باستخدام “x.show()”، سيتم طباعة قيمة المتغير “s” الذي تم تعيينه داخل المنشئ. وباستخدام “x.showMsg(“A message”)”، سيتم طباعة الرسالة “A message” بجانب القيمة التي تم طباعتها بواسطة دالة “show”.

بهذه الطريقة، يتم تجنب الخطأ السابق ويعمل الكود كما هو متوقع. تذكر دائمًا أن تعريف الدوال داخل الفئات بشكل صحيح يعتبر أمرًا مهمًا جدًا في Python لضمان عمل الشفرة بشكل صحيح وفعال.

وهكذا، يمكن للمبرمجين الجدد في Python الآن فهم كيفية تجنب الأخطاء المشابهة في المستقبل وكيفية تنظيم الشفرة بشكل صحيح لتحقيق النتائج المرجوة. استمتع بتعلم Python وتطوير مهاراتك في البرمجة!

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر