2015-08-31 94 views
2

matplotlib中的幾個方法都返回一個值,並設置一個對象的屬性。例如,.yaxis.set_major_locator(),它們都會更改圖的y軸,並返回y軸。分配既設置又返回值的方法的未使用的返回值?

在一段代碼,我有以下語句:

axes.yaxis.set_major_locator(DayLocator()) 

axes到我分配一個副區的變量。

由於我使用的是axes,但對於y軸本身沒有用處,因此未分配axes.yaxis.set_major_locator(DayLocator())的返回值。

這對我來說似乎很完美,但是pylint當然會抱怨這一點。

兩個問題:

  1. 我可以放心地忽略此警告,或者我還是應該給它分配?
  2. 更一般地說,setter_method的優點還會返回非None值嗎?
+0

在Python中用於改變對象狀態和返回None的方法是常規的(顯式地,或者通過隱式地結束沒有顯式返回語句的方法),*或*保持狀態不變並返回一些東西。違反該慣例會讓你的代碼更難以閱讀和理解那些熟悉它的人。 – jonrsharpe

+0

這就是我所想的,這正是我爲什麼在matplotlib –

回答

2

簡短回答:在這種情況下,請忽略此警告或配置pylint以忽略它。


對於什麼是值得ax.yaxis.set_major_locator(...)回報None,因爲它應該按照約定。

但是,還有其他一些情況,例如ax.set_ylim(...),除了修改軸之外,還會返回新的限制。

至於爲什麼事情ax.set_ylim將返回設定值,matplotlib它只是在功能可能不孝敬你傳遞值的情況下完成的。

例如,如果您設置了y限制,具體取決於aspectadjustable的值,那麼可能不會遵守這些確切的限制。因此,set_ylim返回實際設置的限制。

+0

中被這些方法弄糊塗的原因。碰巧,由於輸入錯誤,我部分得到了一個pylint錯誤,然後在matplotlib中查看了幾個與座標軸相關的方法。 –