Все, Как указано в названии, возможно ли изменить способ дескриптора __get__
во время выполнения. Я нахожусь в ситуации, когда у меня есть функция, которую украшали и декомпилировали на лету во время выполнения. Я хочу, чтобы результат этой функции был доступен как атрибут, аналогичный тому, что делает @property
. Я исследовал это и нашел его дескриптором, но кажется, что метод дескрипторов __get__
доступен только для чтения.Можете ли вы изменить метод __get__ дескриптора python во время выполнения?
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
, поскольку он в основном не нужен. Я просто не смог украсить метод x12, как он доступен только для чтения.
фон
Я пишу стратегию игру пошаговой, и я использую декоратор реализовать постоянные условия. Я могу эффективно использовать эти декораторы, когда я использую тестовые примеры, но проблема в том, что для получения вычисленного значения вы должны использовать вызов функции, а не доступ к атрибуту. Это кажется плохой идеей, потому что получение значений, описывающих единицу, будет непоследовательно использовать функции или атрибуты. Я бы хотел стандартизировать атрибуты, если смогу.
Спасибо, я буду смотреть в этот этот вечер, но похоже, что он делает то, что я хочу. Если все будет работать, я приму ответ. – mklauber