Question

Je suis nouveau à Python. Je tentais de définir et d'exécuter une fonction simple dans une classe.

Quelqu'un peut-il s'il vous plaît me dire ce qui ne va pas dans mon code:

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')

Je reçois ci-dessous erreur
TypeError: m1 () prend exactement trois arguments de position (4 donné)

Était-ce utile?

La solution

Les méthodes d'instance prennent par exemple comme premier argument:

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

Vous pouvez également utiliser @staticmethod décorateur pour créer la fonction statique:

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

Autres conseils

Le premier paramètre est toujours l'objet lui-même.

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

Par convention, les méthodes dans une instance de classe reçoivent une référence d'objet comme 1er argument self nommé.

>>> 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')
>>> 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top