我正在测试一个代码示例,但一直收到一个错误信息
# interactive updates
import shelve
from person import Person
fieldnames = ('name', 'age', 'job', 'pay')
db = shelve.open('class-shelve')
while True:
key = input('\nKey? => ')
if not key: break
if key in db:
record = db[key] # update existing record
else: # or make/store new rec
record = Person(name='?', age='?') # eval: quote strings
for field in fieldnames:
currval = getattr(record, field)
newtext = input('\t[%s]=%s\n\t\tnew?=>' % (field, currval))
if newtext:
#print('Blah Blah' + newtext)
setattr(record, field, eval(newtext))
#setattr(record, field, 'Testing')
db[key] = record
db.close()
当使用eval函数时,我试图使用setattr更新一条记录时,我得到了这个错误。
SyntaxError: unexpected EOF while parsing
问题似乎是eval的部分,我知道eval的安全问题,但在这里,我试图让一个例子工作.类Person是非常简单的,有4个字段来存储值。
你必须 引用 字符串输入显式,书上是这样写的。
例:new?=>'lucas'