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

时间:2018-03-06 19:38:16

标签: python scikit-learn

类似的问题:What's the advantage of a trailing underscore in Python naming?。这解决了优点/缺点,而这解决了这样做的原因,无论是广泛还是专门针对sklearn。

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

  • cv_results _
  • best_params _
  • best_score_

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

我认为这不仅仅是一个sklearn的事情,我不知道适当的标签是什么,所以我标记了sklearn。请更正标签(或我!)。

1 个答案:

答案 0 :(得分:6)

对于sklearn,有一个具体的解释。检查sklearn developer guideline,其中有一个注释。该约定用于在调用fit()后具有有意义值的估计量的属性。

然后用于检查估算器是否适合,例如参见here

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

    [...]

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

   [...]