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