【发布时间】:2024-01-06 21:17:01
【问题描述】:
有没有办法在 Python 的运行时覆盖 @property getter?
我希望我的班级有一个“复杂”的 getter,它运行一些代码并返回一个可以更改的值。但是,如果出于某种原因我将该变量设置为其他值,我希望它始终返回该值。
例如:
class Random(object):
@property
def random_number():
return random.randint(0,10)
@random_number.setter
def random_number(value):
# Overlord says that random must always return `value`
(((I don't know that to do here)))
>>>r = Random()
>>>r.random_number
>>>(returns something between 0,10)
>>>r.random_number = 4 # Confirmed by dice roll
>>>r.random_number
>>>4 (always)
我知道我可以使用诸如“force_value”之类的实例变量来做到这一点,我总是检查我的 getter,但如果可能的话我想避免这种情况。
理想情况下,我的 setter 函数可以做类似的事情
self.random_number.getter = lambda:4
但我不知道如何做到这一点。
【问题讨论】:
标签: python properties overriding