【问题标题】:How to change a function in python module?如何更改python模块中的函数?
【发布时间】:2021-09-06 09:58:52
【问题描述】:

我试图修改一个类中的一个函数。我按照link 的步骤进行操作。我想了解为什么这些更改不起作用。

函数是:

def explain(self, test_df, row_index=None, row_num=None, class_id=None, bacckground_size=50, nsamples=500)

来自模块ktrain

我试图自己获取形状值而不是绘图。我的更改在

 def alternative_explain (self, test_df, row_index=None, row_num=None, class_id=None, background_size=50, nsamples=500)

那我试试:

import types
import ktrain
funcType = types.MethodType
predictor1 = TabularPredictor()

但得到“名称'TabularPredictor'未定义的错误。同样,我无法从TabularPredictor创建一个新的继承类。我做错了什么?

更新:我确实导入了 ktrain

【问题讨论】:

  • 听起来您没有导入正确的模块来定义TabularPredictor
  • 我做了“import ktrain”
  • 所以你需要使用ktrain.TabularPredictor之类的东西。
  • import ktrain.TabularPredictor 出现错误“没有名为 ktrain.TabularPredictor 的模块”
  • 不,我是说predictor1 = ktrain.TabularPredictor()

标签: python python-import python-module monkeypatching


【解决方案1】:

听起来你对 python import 语句有点困惑,它有几种替代语法。

使用import ktrain 只会在您的代码中导入对模块ktrain 的引用;如果您希望您的代码引用 ktrain 模块内部的任何内容,则需要使用点表示法,例如ktrain.TabularPredictor()。优点:ktrain 模块中的所有内容现在都可以从您的代码中访问。缺点:每次您想要创建该类的实例时输入 ktrain.TabularPredictor() 可能有点冗长,而且您实际上可能只需要该模块中的一两个类。

使用from ktrain import TabularPredictor 将使TabularPredictor 类在代码的命名空间中可访问,因此无需使用点符号;当你想创建一个实例时,你可以输入TabularPredictor()。优点:不那么罗嗦,你只导入你需要的东西(ktrain 的其他类或函数都不能从你的代码中访问)。缺点:稍后您可能会发现模块中的其他一些类/函数很有用,这意味着您必须更改导入语句。不得不从同一个模块中单独导入 10 个不同的类也很痛苦。

您可以阅读更多here

【讨论】:

  • 当我从 ktrain 导入 TabularPedictor 时收到错误“无法从 'ktrain' (***\ktrain_init_.py) 导入名称“TabularPredictor”
  • 我从未使用过该模块,但是,通过查看 github 上的目录结构,您可以尝试from ktrain.tabular.predictor import TabularPredictor。 TabularPredictor 类位于 predictor.py 文件中,该文件位于 ktrain 包中的 tabular 目录中。
猜你喜欢
  • 2017-12-08
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-24
  • 2014-08-18
  • 2023-03-28
  • 2014-05-20
相关资源
最近更新 更多