Python 如何以编程方式替换单个实例的属性访问器?

Python 如何以编程方式替换单个实例的属性访问器?,python,python-3.x,Python,Python 3.x,我有一个可以简化为以下内容的类: class Foo(object): @property def x(self): return 'Boo' foo = Foo() foo.x --> 'Boo' 我正在做一些测试/模拟,我想更改xaccessor属性以返回一个不同的常量值,只针对foo实例。显然,我不能只使用foo.x='13蜡烛',因为它是一个属性!我试过: foo.__dict__['x'] = '13 Candles' 但是foo.x之后仍然

我有一个可以简化为以下内容的类:

class Foo(object):
    @property
    def x(self):
        return 'Boo'

foo = Foo()
foo.x --> 'Boo'
我正在做一些测试/模拟,我想更改
x
accessor属性以返回一个不同的常量值,只针对
foo
实例。显然,我不能只使用
foo.x='13蜡烛'
,因为它是一个属性!我试过:

foo.__dict__['x'] = '13 Candles'
但是
foo.x
之后仍然返回
'Boo'

我也试过了

setattr(foo, 'x', '13 Candles')

希望“绕过”存取器机械。但没有这样的运气。这只是一个只读属性的错误。

如果您定义了属性,还需要定义一个setter。您是否控制了该类?这不是上述问题的重复问题,因为它与实例相关,而不更改类。我推荐标准图书馆。如果你在google上搜索python+mock+属性,你会发现这是许多问题的重复,模拟文档是一个解决方案。如果你定义了一个属性,你也需要定义一个setter。可能的重复你控制这个类吗?这不是上面问题的重复问题,因为它与实例相关,而不更改类。我推荐标准图书馆。如果你在google上搜索python+mock+属性,你会发现它是许多问题的重复,模拟文档是一个解决方案