나는 다음과 같은 평가() 일을 가지고파이썬 것이다 평가하지() 코드
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'와 뭐가 잘못 ' 고객 ', column_name)'? 'eval()'을 사용하는 이유는 무엇입니까? –
내가 할당해야하는 '고객'의 다른 열 이름과 속성의 전체 목록이 있기 때문에. –
'getattr'과'setattr'을 쓰지 않는 이유는 무엇입니까? –