Ошибки, о которых идет речь, исходят от pylint, linter, а не от самого python.Хотя Pylint довольно умный, некоторые конструкции (особенно те, которые включают динамически добавленные свойства) не поддаются его пониманию.Когда вы сталкиваетесь с подобными ситуациями, лучший способ действий состоит из двух частей:
- Проверьте документы, код и т. Д., Чтобы удостовериться в правильности написанного вами кода (т. Е. Убедитесь, чторезультат линтера - ложное срабатывание)
- Сообщите линтеру, что вы знаете, что делаете, и он должен игнорировать ложное срабатывание
user2357112 позаботился о первом шаге в комментарияхвыше, демонстрируя, что свойство динамически устанавливается другой частью библиотеки.
Второй шаг может быть выполнен для pylint путем добавления комментария после каждой из строк с ошибками, говорящих ему об изменении этой конкретной проверки для этогоконкретная строка:
qc.h(q[0]) # pylint: disable=no-member