Код: Выделить всё
class foo:
def __init__(self,name):
self.name = name
def print_name(self):
print(self.name)
object1 = foo('old_name')
Со следующим контекстным менеджером это, похоже, работает.
Я скопировал объект, чтобы его можно было печатать, поскольку у объекта может быть много атрибутов, которые можно временно изменить, но я мог бы просто сохранить все возможные атрибуты и восстановить их аналогичным образом.
Однако есть ли лучший способ сделать это?
Код: Выделить всё
class foo:
def __init__(self,name):
self.name = name
def print_name(self):
print(self.name)
@contextmanager
def dummy(self):
try:
dummy = copy.copy(self)
yield dummy
finally:
pass
object1 = foo('old_name')
object1.print_name()
Код: Выделить всё
with object1.dummy() as d:
d.name = 'new_name'
d.print_name()
Код: Выделить всё
object1.print_name()
Подробнее здесь: https://stackoverflow.com/questions/793 ... ass-object
Мобильная версия