Избегайте предупреждения Pylint E1101: «Экземпляр .. не имеет .. члена» для класса с динамическими атрибутами.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Избегайте предупреждения Pylint E1101: «Экземпляр .. не имеет .. члена» для класса с динамическими атрибутами.

Сообщение Anonymous »


Представьте себе функцию, которая динамически добавляет атрибуты к объекту с помощью setattr. Причина этого в том, что я хочу сопоставить некоторую внешнюю структуру (например, заданное дерево параметров) с объектом:

my_object = SomeClass() apply_structure (my_object, some_descriptor) my_object.device1.enabled = Истина Технически это работает, но, конечно, Пылинт справедливо жалуется на то, что «device1» не является членом SomeClass.

Я мог бы отключить предупреждение, но это было бы плохо (потому что я все равно хочу получать предупреждение во всех случаях, когда атрибут не существует из-за орфографической ошибки и т. д.).

Существует ли распространенный и законный (устойчивый к Pylint) способ динамического добавления членов к объекту, который не приводит к предупреждениям?

Альтернатива: могу ли я отключить Pylint только для одного объекта, а не для строки/блока/файла?

Объяснение:

Вы можете задаться вопросом, почему я должен динамически оснащать объект атрибутами-членами, если позже я планирую получить доступ к этим атрибутам жестко запрограммированным способом.

Причина: у меня есть динамическая часть программы (где происходит оформление) и статическая часть, которая специализирована для определенного сценария. Поэтому я мог бы также создать статический класс для этого сценария, но во многих ситуациях это было бы излишним.

Следующий специализированный код может разрешить доступ к некоторым параметрам устройства, которое может быть подключено к какой-либо шине:

класс MyDeviceHandler: on_get_some_subtree_element (сам): вернуть _some_internal_value on_set_some_subtree_element (я, значение): _some_internal_value = значение разработчик = MyDeviceHandler() Decoration_object_with_device_structure (dev, 'некоторые/прикрепленные/устройства') dev.some.subtree.element = 5 #
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Избегайте Pylint Warning E1101: 'экземпляр .. нет .. член' для класса с динамическими атрибутами
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • «E1101» — экземпляр «Класса» не имеет члена «метода».
    Гость » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Гость
  • Задача тупика в системе распределения ресурсов с динамическими зависимостями задач с динамическими задачами
    Anonymous » » в форуме C++
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Как захватить члена класса члена класса в лямбда-выражении
    Anonymous » » в форуме C++
    0 Ответы
    92 Просмотры
    Последнее сообщение Anonymous
  • Как захватить члена класса члена класса в лямбда-выражении
    Anonymous » » в форуме C++
    0 Ответы
    118 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»