TypeError: fonction(auto, élément, **kwargs) prend exactement 2 arguments (3)
J'ai une fonction qui met les données dans une base de données, appelée new_item()
:
def new_item(self, item, **optional):
Après l'envoi d'un formulaire web, une fonction doit vérifier la saisie de l'utilisateur et ensuite utiliser cette fonction pour mettre la saisie de l'utilisateur dans la base de données (je suis en utilisant le Flacon, le nom de la fonction est add_item()
):
Market.new_item([request.form['title'],
session.get('user_id'),
request.form['category']],
{'desc': request.form['desc'],
'place': request.form['place'],
'price': request.form['price'],
'ono': ono})
Mais j'obtiens cette erreur:
File X, line 99, in add_item
'ono': ono})
TypeError: new_item() takes exactly 2 arguments (3 given)
Fourrure de débogage je imprimer cette déclaration avant l'appel de la fonction add_item
. Sortie de la Console est:
([u'iPhone 5', '791465667539154', u'2'],
{'price': u'99', 'place': u'Bossental', 'ono': True, 'desc': u'My brand new iPhone'})
Je ne sais vraiment pas quel est le problème. Je n'ai jamais travaillé avec **kwargs
avant, est-ce lié au problème?
OriginalL'auteur Eknoes | 2014-06-16
Vous devez vous connecter pour publier un commentaire.
Vous fournissant trois arguments de la fonction:
self
argument,Market
;item
; et**optional
est un spécial de l'argument, qui emballe tous les arguments mots-clefs ne sont pas spécifiés dans un dictionnaire, accessible au sein de la fonction en tant queoptional
(par convention, il est généralement appelékwargs
).Une démonstration rapide:
Vous pouvez décompresser un dictionnaire en mots clés arguments avec
**
trop:Donc si vous voulez passer le contenu du dictionnaire dans le
**optional
argument, vous pouvez utiliser la même syntaxe pour décompresser le dictionnaire dans les arguments mots-clefs:OriginalL'auteur jonrsharpe
OriginalL'auteur laike9m
Si vous souhaitez passer des arguments mot-clé, alors vous devez spécifier l'argument de nom lors de l'appel de la fonction.
Ce lien a plus d'infos sur le mot-clé args
Peut-être vous avez besoin de modifier votre code à la suivante. Ensuite, il serait de travailler
Espérons que cette aide!
OriginalL'auteur user2109788