【发布时间】:2016-11-26 16:14:08
【问题描述】:
我经常发现我需要临时分配一些成员变量,例如
old_x = c.x
old_y = c.y
# keep c.z unchanged
c.x = new_x
c.y = new_y
do_something(c)
c.x = old_x
c.y = old_y
但我希望我可以简单地写
with c.x = new_x; c.y = new_y:
do_something(c)
甚至
do_something(c with x = new_x; y = new_y)
Python 的装饰器或其他语言特性可以启用这种模式吗? (我可以根据需要修改c的类)
【问题讨论】:
-
为什么不新建一个实例?
-
@HaifengZhang
c可能有许多其他变量没有被修改 -
好调用@HaifengZhang,除非
do_something(c)分配给c的其他属性。 -
@MaxB 创建一个包含您修改的实例 c 属性的新类,并将
c用于其他任务。
标签: python python-2.7 python-decorators python-descriptors