Описание тега python-descriptors
Дескрипторы Python - это способ создания управляемых атрибутов. Среди множества преимуществ управляемые атрибуты используются для защиты атрибута от изменений или для автоматического обновления значений зависимого атрибута.
1
ответ
Адаптируемый дескриптор в Python
Я хочу создать некоторый дескриптор класса, который возвращает прокси-объект. Прокси-объект при индексации извлекает элементы объекта и применяет к ним индекс. Тогда он возвращает сумму. Например, class NDArrayProxy: def __array__(self, dtype=None):…
28 сен '15 в 00:47
2
ответа
Как я могу получить имя атрибута при работе с протоколом дескриптора в Python?
Протокол дескриптора работает нормально, но у меня все еще есть одна проблема, которую я хотел бы решить. У меня есть дескриптор: class Field(object): def __init__(self, type_, name, value=None, required=False): self.type = type_ self.name = "_" + n…
03 фев '17 в 12:02
1
ответ
Понимание техники, позволяющей декораторам на основе классов поддерживать методы экземпляров
Недавно я столкнулся с техникой в библиотеке декоратора Python memoizedдекоратор, который позволяет ему поддерживать методы экземпляра: import collections import functools class memoized(object): '''Decorator. Caches a function's return value each…
26 фев '18 в 06:45
1
ответ
Вызовите __get__ дескриптора Python с дополнительными аргументами?
Можно ли передать дополнительные аргументы при получении дескриптора? Например, я хотел бы иметь: class Element(object): def __init__(self, text='initial'): self.text = text def __get__(self, instance, owner, extra_text=''): print self.text + instan…
07 апр '16 в 16:00
2
ответа
Как украсить класс и использовать дескрипторы для доступа к свойствам?
Я пытаюсь освоить (начать;)), чтобы понять, как правильно работать с декораторами и дескрипторами на Python 3. Мне пришла в голову мысль, что я пытаюсь понять, как его кодировать. Я хочу иметь возможность создать класс A, украшенный определенной "фу…
07 май '17 в 04:44
1
ответ
Понимание дескрипторов Python
Я пытаюсь лучше понять дескрипторы. Я не понимаю, почему в методе foo дескрипторы __get__ метод не вызывается. Насколько я понимаю, дескрипторы __get__ метод всегда вызывается, когда я получаю доступ к атрибуту объектов через оператор точки или когд…
28 апр '15 в 20:41
1
ответ
Данные Python и дескрипторы не данных
Согласно документации Python, Дескрипторы данных с __set__() а также __get__() определенные всегда переопределяют переопределение в словаре экземпляра. У меня нет проблем с пониманием этого предложения, но может ли кто-нибудь объяснить мне, почему т…
22 окт '12 в 07:59
0
ответов
Как отменить декораторы класса в конструкторе
Давайте рассмотрим следующий пример декораторов классов (источник http://www.informit.com/articles/article.aspx?p=1309289&seqNum;=4): class GenericDescriptor: def __init__(self, getter, setter): self.getter = getter self.setter = setter def __get__(…
16 ноя '18 в 17:25
3
ответа
Почему в __get__ люди устанавливают для параметра владельца значение None?
Я видел это довольно часто: def __get__(self, instance, owner=None): Почему некоторые люди используют значение по умолчанию None для owner параметр? Это даже сделано в документации по Python: descr.__get__(self, obj, type=None) --> value
25 июл '15 в 12:53
0
ответов
Как я могу установить документ для атрибута класса при работе с протоколом дескриптора в Python?
Я использую протокол дескриптора для проверки типа атрибутов класса ( ссылка). Но я не уверен, как установить документ для этого атрибута при их установке. Есть ли способ установить документ? class IntField: def __get__(self, instance, owner): retur…
24 июн '18 в 15:22
1
ответ
Какой эффективный способ проверить, был ли дескриптор уже развернут или нет?
Предположим, у нас есть следующий класс: class K: # classmethod creates a descriptor @classmethod def cm(cls, a, b, c): pass Теперь мы получаем cm атрибут следующим образом: import random getters = [ lambda attr_name: object.__getattribute__(K, '__d…
02 май '18 в 04:04
1
ответ
Python3.Descriptor.Class
Здравствуйте, у меня просто задача, но я снова застрял: Как я могу использовать переменную из класса в дескриптор? я имею commission переменная из родительского класса, и мне нужно использовать его в дескриптор при вызове set: self.amount = int(amou…
10 мар '18 в 12:07
2
ответа
Доступ к связанному методу или к себе при украшении метода
У меня есть случай, когда я хочу украсить метод дополнительным способом его вызова, например, в этом коде: def decorator(func): def enhanced(*args, **kwargs): func(*args, **kwargs) func.enhanced = enhanced return func @decorator def function(): pass…
02 окт '18 в 06:31
2
ответа
Отразить изменение списка Python в строковом атрибуте
Я ищу элегантный (эффективный) способ реализовать следующее: У меня есть класс, хранящий список значений в виде строки (с разделителем, например.: " - "). Я использую свойство (геттер и сеттер), чтобы преобразовать эту строку в Python list, class C(…
06 июн '16 в 19:51
1
ответ
Использование __get__-дескриптора Python для не классовых атрибутов
С помощью __get__ дескриптор я хотел бы добиться чего-то вроде этого: class Wrapper: def __init__(self, wrapped_value): self._wrapped_value = wrapped_value def __get__(self, instance, owner): return self._wrapped_value wrapper = Wrapper('foo') asser…
28 дек '18 в 11:40
2
ответа
Аккуратный способ получить объект дескриптора
В питоне 3 class A(object): attr = SomeDescriptor() ... def somewhere(self): # need to check is type of self.attr is SomeDescriptor() desc = self.__class__.__dict__[attr_name] return isinstance(desc, SomeDescriptor) Есть ли лучший способ сделать это…
07 фев '14 в 13:46
1
ответ
Как получить имя атрибута дескриптора из __get__?
При реализации дескриптора можно использовать __set_name__ зарегистрировать, под каким именем атрибута был задан дескриптор. Хотя предположим, что мы должны установить более одного атрибута для одного и того же дескриптора, тогда, похоже, нет никако…
13 июн '18 в 15:17
0
ответов
Python: как получить доступ к атрибутам экземпляра во вложенных дескрипторах?
пример Возьмите следующий пример class Leaf: def __get__(self, instance, owner): if instance is None: return self # TODO How to access Root.value here? class Branch: bar = Leaf() class Root: foo = Branch() def __init__(self, value): self.value = val…
07 фев '18 в 22:31
2
ответа
Улучшение класса `namedlist`, вдохновленного`namedtuple`
Фон Мне нужен тип, похожий на namedtuple, но с изменяемыми полями. namedlist должен вести себя следующим образом: Something = namedlist('Something', ['a', 'b']) st = Something(123, 456) print st # Something(a=123, b=456) a, b = st print a, b, st.a,…
02 ноя '15 в 00:46
1
ответ
Дескрипторы в эффективном Python
Я читаю Пункт 31 в книге "Эффективный Питон". Я не понимаю, почему в примере на странице 97, почему math_grade, writing_grade а также science_grade классовые (статические) переменные Exam класс, а не обычные переменные экземпляра. Если они были пере…
27 мар '18 в 15:34