ValueError: не может переключиться с ручной спецификации поля на автоматическую нумерацию полей

Класс:

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)

Создайте экземпляр моей книги:

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

Обратите внимание, что я не инициализировал атрибут "self.press", а использовал его в методе get_entry. Прежде чем вводить данные.

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

До сих пор я могу указать все данные, вводимые с помощью vars

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

Я затрудняю много данных о моей книге в консоли. Попробуйте вызвать метод get_entry, сообщите об ошибках.

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

Все это происходит в интерактивном режиме на console.I лелеять данные занесены, далее рассол mybook объекта в файле. Однако это неверно. Как спасти его в интерактивном режиме. или я должен перезапустить снова и снова.

Ответы

Ответ 1

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

это не работает. Если вы укажете позиции, вы должны сделать это до конца:

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

В вашем случае лучше всего оставить python таким образом:

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