Безопасно ли использовать vars() в теле класса для динамической установки атрибута? ⇐ Python

Программы на Python
Anonymous
Безопасно ли использовать vars() в теле класса для динамической установки атрибута?

Сообщение Anonymous »

В Python я могу использовать vars() для динамической установки атрибутов класса

Код: Выделить всё

class A:
vars()['x'] = 1

print(A.x)  # Prints 1
Однако в документации по vars() указано:

Без аргумента vars() действует как locals() . Обратите внимание: словарь locals полезен только для чтения, поскольку обновления словаря locals игнорируются.

Это указывает на то, что обновления vars() не должны содержать каких-либо изменений. эффект, но, судя по приведенному выше примеру, они явно действуют. В документации для locals() аналогично указано:

Примечание. Содержимое этого словаря не следует изменять; изменения могут не повлиять на значения локальных и свободных переменных, используемых интерпретатором.

Это немного отличается от документации var(), поскольку в ней говорится об обновлениях. может не влиять на локальные переменные, тогда как в документации по vars() утверждается, что это вообще не влияет на локальные переменные.
Безопасно ли продолжать использовать переменные? () установить атрибуты класса? Или, делая это, я полагаюсь на неопределенное поведение?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -attribute

Вернуться в «Python»