1. ホーム
  2. python

[解決済み】ValueError: 手動フィールド指定から自動フィールド番号指定に切り替えることができない

2022-02-19 14:15:38

質問

クラスのことです。

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',...}

コンソールにmybookのデータをたくさん入力したのですが、get_entryメソッドを呼び出そうとすると、エラーが表示されます。

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

入力されたデータを大切にし、さらにピクルスにする。 mybook オブジェクトをファイルに保存します。しかし、それは欠陥があります。インタラクティブモードでは、どのようにそれを救済することができます。 または、もう一度最初からやり直さなければなりません。

解決方法は?

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)