I次のeval()のものを持っている:Pythonの意志のevalない()コード
c = Customer()
eval("c.name = row.value('customer', '{c}')".format(c=column_name), { 'c': c, 'row': row})
私はそれを実行しようとすると、私はこれを取得:
Traceback (most recent call last):
File "./import.py", line 19, in <module>
c = Customer.save_from_row(row)
File "/home/jason/projects/mcifdjango/mcif/models/customer.py", line 43, in save_from_row
eval("c.name = row.value('customer', '{c}')".format(c=column_name), { 'c': c, 'row': row})
File "<string>", line 1
c.name = row.value('customer', 'name')
^
SyntaxError: invalid syntax
は私が間違って何をやっています?
編集:私は十分に私の問題の状況を説明していないように見えるので、誰でも好奇心旺盛だ場合は、ここでは、私がやってしまったものです:
@classmethod
def save_from_row(cls, row):
c = cls()
map(lambda column_name: setattr(c, column_name, row.value('customer', column_name)), c.distinguishing_column_names())
return c.upsert()
私はおよそsetattr()
を発見する前に、私は別にでしたc
に複数の異なる属性を設定します。
そう...必要なものをしないだろう(文ため
eval
ようexec
作品、言われていること。) customer '、column_name) '? 'eval()'が関わるのはなぜですか? –私は割り当てる必要がある 'Customer'の異なる列名とプロパティの全リストを持っています。 –
なぜ 'getattr'と' setattr'を使わないのですか? –