所有,正如标题所问,是否可以__get__
在运行时更改描述符的方法。我的情况是,我有一个在运行时动态修饰和未修饰的函数。我希望这个函数的结果可以作为一个属性使用,类似于它@property
所做的。我研究了一下,发现它是一个描述符,但似乎描述符的__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
方法,因为它基本上是不必要的。我只是无法装饰__get__
x 的方法,因为它是只读的。
背景
我正在编写一个基于回合的策略游戏,并且我正在使用装饰器来实现持久性条件。当我使用测试用例时,我能够有效地实现这些装饰器,但问题是要获得计算值,您必须使用函数调用,而不是属性访问。这似乎是个坏主意,因为获取描述单元的值会不一致地使用函数或属性。如果可以的话,我想对属性进行标准化。