属性名称以下划线结尾是什么意思?

qua*_*nty 4 python scikit-learn

类似的问题:Python命名中尾随下划线的优点是什么?.这解决了优点/缺点,而这解决了这样做的原因,无论是广泛的还是专门针对sklearn.

我正在浏览sklearn文档,我注意到sklearn.model_selection.GridSearchCV属性都以下划线结尾.例如:

  • cv_results_
  • best_params_
  • 最好成绩_

为什么是这样?下划线做什么?请在答案中尽可能广泛(即不要仅仅参考sklearn的GridSearchCV.

我假设这不仅仅是一个sklearn的东西,我不知道适当的标签是什么,所以我标记sklearn.请更正标签(或我!).

Mar*_* V. 12

对于sklearn,有一个特定的解释.检查sklearn 开发人员指南,其中有相关说明.该约定用于在fit()调用后具有有意义值的估计器的属性.

然后,这些用来例如检查估计拟合,例如参见这里:

class LinearModel(six.with_metaclass(ABCMeta, BaseEstimator)):
    """Base class for Linear Models"""

    [...]

    def _decision_function(self, X):
        check_is_fitted(self, "coef_")

   [...]
Run Code Online (Sandbox Code Playgroud)