我有以下的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
上設置幾個不同的屬性。
所以......這有什麼錯`c.name = row.value(」 customer',column_name)`?爲什麼要涉及「eval()」? – 2011-02-01 19:39:55
因爲我有一個我需要分配的`Customer`的不同列名和屬性的完整列表。 – 2011-02-01 19:42:59