Я использую понимание списка, чтобы присвоить значение атрибуту класса в Python2.7. Я заметил, что это добавляет переменную, используемую в понимании списка как атрибут класса.Python 2.7 list comprehension leaks variable name
class MyClass:
some_strings = [s for s in ('Foo','Bar')]
print MyClass.s
Output: 'Bar' #??
Может кто-нибудь объяснить, почему это происходит? Есть ли что-то неправильное в использовании списка?
Я этого не знал. Я переводил код Python3 в Python2, и у меня была странная ошибка, из-за которой атрибут был переопределен переменной в понимании списка. Поведение Python3 определенно является разумным улучшением! Я удивлен, что никогда не видел этого в общих ошибках Python2 ... –
@JacquesGaudin Я был действительно удивлен, когда столкнулся с противоположным эффектом - что-то не переписывалось, когда я этого ожидал. Было немного хаки ... Я согласен с тем, что поведение в Py3 кажется более чистым и, как правило, поощряет лучший код. – MisterMiyagi