web-dev-qa-db-fra.com

ValueError: impossible de passer de la spécification de champ manuelle à la numérotation automatique des champs

La classe:

class Book(object):
    def __init__(self, title, author):
        self.title = title
        self.author = author

    def get_entry(self):
        return "{0} by {1} on {}".format(self.title, self.author, self.press)

Créez-en une instance de mon livre:

In [72]: mybook = Book('HTML','Lee')
In [75]: mybook.title
Out[75]: 'HTML'
In [76]: mybook.author
Out[76]: 'Lee'

Veuillez noter que je n'ai pas initialisé l'attribut 'self.press', tout en l'utilisant dans la méthode get_entry.

mybook.press = 'Murach'
mybook.price = 'download'

Jusqu'à présent, je peux spécifier toutes les entrées de données avec vars

In [77]: vars(mybook)
Out[77]: {'author': 'Lee', 'title': 'HTML',...}

Je tape beaucoup de données sur mybook dans la console. Lorsque j'appelle la méthode get_entry, le rapport d'erreurs.

mybook.get_entry()
ValueError: cannot switch from manual field specification to automatic field numbering.

Tout cela se passe en mode interactif sur console. Je chéris les données saisies, puis pickle mybook objet dans le fichier. Cependant, il est imparfait. Comment le sauver en mode interactif. ou je dois tout recommencer.

13
Algebra
return "{0} by {1} on {}".format(self.title, self.author, self.press)

ça ne marche pas. Si vous spécifiez des postes, vous devez le faire jusqu'à la fin:

return "{0} by {1} on {2}".format(self.title, self.author, self.press)

Dans votre cas, le mieux est de laisser python traiter cela automatiquement:

return "{} by {} on {}".format(self.title, self.author, self.press)
18