全部, 正如標題所述,是否有可能在運行時更改描述符的方法__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