Избегайте Pylint Warning E1101: 'экземпляр .. нет .. член' для класса с динамическими атрибутамиPython

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

Сообщение Anonymous »

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

Код: Выделить всё

my_object = SomeClass()
apply_structure(my_object, some_descriptor)
my_object.device1.enabled = True
Технически это работает, но, конечно, Pylint справедливо жалуется на то, что 'Device1' не является членом SomeClass .
Я мог отключить Предупреждение, но это было бы плохо (потому что я все еще хочу получить предупреждение во всех случаях, когда атрибут не существует из -за написания неправильно (Pylint-Proop) способ динамически добавить участников в объект, который не приводит к предупреждениям? LINE/BLOCK/FILE? Когда я планирую Чтобы получить доступ к этим атрибутам с жестким кодированием позже. Специализированный для определенного сценария . Так что я мог также создать статический класс для этого сценария, но это было бы чрезмерным во многих ситуациях. Код может разрешить доступ к какому -либо параметру устройства, который может быть подключен к какой -то шине: < /p>

Код: Выделить всё

class MyDeviceHandler:
on_get_some_subtree_element(self):
return _some_internal_value
on_set_some_subtree_element(self, value):
_some_internal_value = value

dev = MyDeviceHandler()

decorate_object_with_device_structure(dev, 'some/attached/device')

dev.some.subtree.element = 5      # 

Подробнее здесь: [url]https://stackoverflow.com/questions/35990313/avoid-pylint-warning-e1101-instance-of-has-no-member-for-class-with-dyn[/url]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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