В конечном счете, то, что вы хотите сделать, несовместимо с тем, как структурирован Python.У вас есть самый элегантный способ сделать это уже в том случае, если ваши переменные являются списками, но это невозможно с числами.
Это потому, что переменных не существует в Python. Ссылки сделать.Таким образом, i.x
- это не список, это ссылка на список .Аналогично, если он ссылается на число.Так что если i.x
ссылается на y
, то i.x = z
на самом деле не меняет значение y
, оно меняет расположение в памяти, на которое указывает i.x
.
В большинстве случаев переменные рассматриваются как блоки, содержащие значение.Имя на коробке.В python значения являются фундаментальными, а «переменные» - это просто теги, которые привязываются к определенному значению.Очень приятно, когда вы к этому привыкнете.
В случае со списком вы можете использовать назначение срезов, как вы уже это делаете.Это позволит всем ссылкам на список видеть изменения, потому что вы изменяете сам объект списка.В случае числа это сделать невозможно, поскольку числа в Python являются неизменяемыми объектами.Это имеет смысл.Пять - это пять, и вы мало что можете сделать, чтобы изменить это.Если вы знаете или можете определить имя атрибута, то вы можете использовать setattr
для его изменения, но это не изменит других ссылок , которые могут уже существовать.
Как говорит Рэйф Кеттлер, если вы можете быть более точным в отношении того, что вы на самом деле хотите сделать, то мы можем придумать простой элегантный способ сделать это.