eval falha na compreensão da lista [duplicado]
Esta pergunta já tem uma resposta aqui:
Python: Como posso executar eval () no escopo local de uma função 2 respostasConsidere o seguinte código hipotético:
class B(object):
def __init__(self):
self.b = 2
def foo(self):
out1 = [eval('self.b')] # ok
print(out1) # prints: [2]
out2 = [eval(cmd) for cmd in ['self.b']] # fails
print(out2) # NameError: name 'self' is not defined
b = B()
b.foo()
Por que a declaração deout1
ok, mas não paraout2
, que fornece o erro "'self' não está definido"?
Estou aprendendo Python e resolvi esse problema enquanto experimentava oeval
. Sim, eu sei o uso deeval
neste exemplo é inapropriado, mas apenas para levar esse exemplo ao valor nominal, alguém pode explicar por que a instrução paraout2
dá a mensagem de erro? Parece que ambas as declarações devem funcionar e fornecer o mesmo resultad
Obrigado por qualquer orientação.