全部, 正如标题所述,是否有可能在运行时更改描述符的方法__get__
。我处于一种在运行时正在进行装饰和未装饰的功能的情况。我希望此功能的结果作为属性提供,与@property
相似。我研究了它,发现它是一个描述符,但似乎描述符的方法是只读的。您可以在运行时更改Python描述符的__get__方法吗?
class Test(object):
def __init__(self):
self._x = 10
def get_x(self):
return self._x
@property
def x(self):
return self.get_x()
上面的代码我想要做什么,大致在
- 值在构造函数中设置
- 我可以装点
get_x
方法对我的心脏的内容 instance.x
回报正确的值
我的问题是,我宁愿不必因为它基本上是不必要的,因此创建get_x
方法。我只是无法装饰x的__get__
方法,因为它是只读的。
背景
我正在写一个回合策略游戏,和我使用的装饰来实现持续的条件。当我使用测试用例时,我能够有效地实现这些装饰器,但问题是要获得计算值,则必须使用函数调用,而不是属性访问。这似乎是一个糟糕的主意,因为获取描述单元的值会不一致地使用函数或属性。如果可以,我想标准化属性。
谢谢,我会考虑这是今天,但它看起来像它做我想要的。如果一切正常,我会接受答案。 – mklauber 2012-02-29 15:45:50