PyLint неправильно говорит, что объекту не хватает определенных атрибутов - PullRequest
1 голос
/ 30 августа 2011

В моем коде я использую объект из скомпилированных расширений (в моем случае, igraph ). Я использую PyLint для анализа кода. PyLint жалуется на отсутствующие атрибуты (такие как igraph Graph.adjacent), хотя он явно существует (код выполняется без ошибок). В чем может быть причина этих сообщений?

Вот тестовый код

import igraph
gr = igraph.Graph(10)#create a graph with 10 vertices
edges = gr.es #no pylint errors
vertices = gr.vs #no pylint errors
print gr.are_connected(0, 1) #pylint error E1101
print gr.adjacent(0) #pylint error E1101

А это вывод пилинта:

************* Module temp
C0111:  1: Missing docstring
C0103:  2: Invalid name "gr" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C0103:  3: Invalid name "edges" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C0103:  4: Invalid name "vertices" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
E1101:  5: Instance of 'Graph' has no 'are_connected' member
E1101:  6: Instance of 'Graph' has no 'adjacent' member

PS: igraph - это в моем PYTHONPATH

1 Ответ

1 голос
/ 30 августа 2011

если это скомпилированное расширение C, Pylint мало что может сделать, так как он не может анализировать исходный код.Можете ли вы распечатать igraph.Graph.are_connected в интерактивной оболочке?Если нет, это означает, что библиотека, вероятно, делает какие-то странные вещи во время создания экземпляра или что методы являются самоанализом.

В любом случае это сложная проблема для Pylint.

Вы можете использовать патч, предоставленный в http://www.logilab.org/ticket/73978 (недавно включенный в дерево разработки) или игнорировать E1101 с встроенными директивами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...