Встроенные методы, чтобы сделать объект изменяемым
Есть ли в Python встроенные методы, чтобы сделать объект mutable? Что-то вроде std::reference_wrapper в C++. Нужно для передачи в обработчик сигнала внешней неглобальной переменной.
Желаемое поведение:
def foo(x):
x = 43
x = 42
print(x) # 42
foo(magic_tools.make_mutable(x))
print(x) # 43
Пример на C++:
#include <iostream>
#include <functional>
template<typename T>
void foo(T x) {
x = 43;
}
int main() {
auto x = 42;
std::cout << x << '\n'; // 42
foo<int&>(std::reference_wrapper<int>{x}); // or foo<int&>(x);
std::cout << x << '\n'; // 43
}
Имеется в виду сделать новый mutable wrapper объект с переопределённым assignment, а не изменить свойства старого; под обработчиком сигнала понимаю произвольную функцию, которую можно установить через signal.signal(signum, handler).