سؤال

أنا جديد في بيثون. كنت أحاول تحديد وتشغيل وظيفة بسيطة في الفصل.

هل يمكن لأي شخص أن يقول لي ما هو الخطأ في الرمز الخاص بي:

class A :
    def m1(name,age,address) :
        print('Name -->',name)
        print('Age -->',age)
        print('Address -->',address)


>>> a = A()
>>> a.m1('X',12,'XXXX')
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    a.m1('X',12,'XXXX')

أنا أحصل أدناه على الخطأ
TypeError: M1 () يأخذ بالضبط 3 حجج الموضعية (4 معين)

هل كانت مفيدة؟

المحلول

أساليب مثيل تأخذ مثيل الوسيطة الأولى:

class A :
    def m1(self, name,age,address) :
        print('Name -->',name)
        print('Age -->',age)
        print('Address -->',address)

تستطيع ايضا استخذام تضمين التغريدة لإنشاء وظيفة ثابتة:

class A :
    @staticmethod
    def m1(name,age,address) :
        print('Name -->',name)
        print('Age -->',age)
        print('Address -->',address)

نصائح أخرى

المعلمة الأولى هي دائما الكائن نفسه.

class A :
    def m1(self, name,age,address) :
        print('Name -->',name)
        print('Age -->',age)
        print('Address -->',address)

حسب الاتفاقية، تلقي الأساليب في حالة فئة إشارة كائن كوسيطة 1st، اسمه self.

>>> class A:
...     def m1(self,name,age,address):
...         print('Name -->',name)
...         print('Age -->',age)
...         print('Address -->',address)
...         
>>> a=A()
>>> a.m1('X',12,'XXXX')
('Name -->', 'X')
('Age -->', 12)
('Address -->', 'XXXX')
>>> 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top