【问题标题】:Reducing the variable in calling a method in python在python中调用方法时减少变量
【发布时间】:2020-09-13 19:34:09
【问题描述】:

我正在使用 sklearn 执行线性回归。 如果我这样做了

reg = LinearRegression()
reg.fit(x_matrix, y)

它工作正常。 为了通过删除变量 reg 来减少代码,我这样做了

LinearRegression.reg.fit(x_matrix, y)

这给了我一个错误。请解释一下区别。

Python 版本 3.7.6

【问题讨论】:

  • 不同之处在于,在第二种选择中,python 不知道您所指的 reg 是什么。
  • 同意。我已经相应地改变了。我想知道减少变量的数量是否是一种好习惯?
  • 如果您想对同一个对象执行另一个操作,则不能使用选项 2。变量污染不好,但您不必真正强调减少变量的数量。唯一重要的是您的代码可读

标签: python scikit-learn linear-regression


【解决方案1】:

您错过了LinearRegression 之后的括号,并且有一个不属于那里的额外reg。使用:

LinearRegression().fit(x_matrix, y)

【讨论】:

    【解决方案2】:
    reg = LinearRegression()
    reg.fit(x_matrix, y)
    

    就像在数学方程式中一样,您可以将变量 reg 替换为其实际值 (LinearRegression())

    这样做会导致LinearRegression().fit(x_matrix, y)

    【讨论】:

      【解决方案3】:

      您的代码的问题是您忘记了创建新对象的括号。然后你不需要指定名称,而是立即使用该对象。

      相反,短格式必须如下所示:

      LinearRegression().fit(x_matrix, y)
      

      这将创建一个 LinearRegression 类型的对象,然后将使用该对象。这可能只是一个小错字或复制和粘贴错误,但如果你不确定对象和类型之间的区别是什么,你应该查一下,这也是 python 和许多其他语言的基础知识。

      【讨论】:

        【解决方案4】:

        一般的区别是在第一个实例中,您是在调用类的函数之前创建类的对象。在第二个实例中,您尝试直接使用类的函数而不首先创建类的对象。仅当您将函数定义为 @staticmethod 时才允许这样做。

        【讨论】:

          猜你喜欢
          • 2013-10-22
          • 1970-01-01
          • 2021-03-19
          • 2016-11-27
          • 1970-01-01
          • 2018-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多