Python Метапрограммирование дескрипторов: как добавить дескриптор после определения класса? - PullRequest
2 голосов
/ 29 марта 2012

Как связать дескриптор после того, как класс уже определен?

В обычном сценарии дескриптора я бы просто сделал это:

class X:
    d = Descriptor()

и затем всякий раз, когда вызывается Descriptor.__get__(self,obj,kls), второй параметр является экземпляром X, и все счастливы и чудесны.

Но что, если X уже определен так:

class X: pass

Как мне добавить дескриптор после факта (и правильно ли он работает!)? Все мои попытки не получают правильную ассоциацию с классом

Я делаю это, потому что у меня есть куча атрибутов, которые я хочу добавить в СУХОМ виде, и я хочу, чтобы они были cached_properties (дескриптор, который я использую для запоминания значений для каждого из них)

1 Ответ

3 голосов
/ 29 марта 2012
X.d = Descriptor()

Это все, что вам нужно.

...