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