2015-08-31 4 views
2

Несколько методов в matplotlib возвращают значение и устанавливают атрибут объекта. Например, .yaxis.set_major_locator(), который как изменяет ось y графика, так и возвращает ось y.Назначить неиспользуемое возвращаемое значение метода, который устанавливает и возвращает значение?

В части кода, у меня есть следующее заявление:

axes.yaxis.set_major_locator(DayLocator()) 

axes с переменной, к которой я назначен сюжетные.

Поскольку я использую axes, но не использую для самой оси y, возвращаемое значение axes.yaxis.set_major_locator(DayLocator()) не назначено.

Это кажется мне прекрасным для меня, но, конечно, жалуется на это.

Два вопроса:

  1. Могу ли я безопасно игнорировать это предупреждение, или я должен назначить его все-таки?
  2. В общем, в чем смысл setter_method, который также возвращает значение, отличное от None?
+0

В Python принято использовать метод * либо * изменить состояние объекта и «вернуть None» (явно или, по окончании действия метода без явного оператора return), * или * оставить состояние неизменным и вернуть что-то. Исходя из этого соглашения, ваш код усложняется для чтения и понимания для тех, кто знаком с ним. – jonrsharpe

+0

Вот что я и подумал, и именно поэтому я смутился этими методами в matplotlib –

ответ

2

Короткий ответ: В этом случае игнорируйте это предупреждение или настройте pylint, чтобы игнорировать его.


Для чего это стоит ax.yaxis.set_major_locator(...) возвращается None, как она должна по соглашению.

Однако есть и другие случаи, такие как ax.set_ylim(...), которые возвращают новые ограничения в дополнение к изменению осей.

Насколько почему вещи, как ax.set_ylim возвращает установленное значение, для Matplotlib это делается только в тех случаях, когда функция не может чтить значение, которое пройдет в.

Например, если вы задали пределы y, в зависимости от значений aspect и adjustable, эти точные лимиты не могут быть выполнены. Поэтому set_ylim возвращает пределы, которые были фактически установлены.

+0

Право. Как это бывает, я частично получил ошибку pylint из-за опечатки, а затем закончил тем, что рассмотрел несколько методов, связанных с осями в matplotlib. –

Смежные вопросы