【问题标题】:local methods in a class (python) [duplicate]类中的本地方法(python)[重复]
【发布时间】:2018-08-29 14:27:04
【问题描述】:

我有一个训练神经网络的“NN”类。 问题是类中的某些方法不能被其他人看到/使用,第 47 和 50 行说“未定义名称 truncated_normal”。我可以创建一个“NN”类,但是当我尝试打电话说nn.create_weights() 时,它会抛出一个错误,即“截断正常”不存在。 af(x)daf(x) 也是如此

有什么建议吗?

【问题讨论】:

  • 邮政编码,不是代码截图。
  • 如果参数中没有self,则将此函数放在类定义之外
  • 大概您需要将self 传递给函数?目前尚不清楚您要做什么
  • truncated_normalself 上的一个方法,所以称它为self.truncated_normal(...)
  • 没有 self 作为第一个参数,一些方法看不到其他方法(他们看不到绑定到对象的内容,因为他们看不到对象)

标签: python class methods undefined


【解决方案1】:

如果你引用的是同一个类的方法,你需要在它前面加上self

例如,第 47 行将显示为:

self.wmatlayer = self.truncated_normal(....

不要忘记,在调用方法时,您正在调用属于类实例的内容,因此您需要在它之前包含 self,就像在引用 @987654325 之类的属性时包含 self 一样@。

【讨论】:

  • 你还应该提到其他方法要么需要self作为第一个参数,要么被装饰为staticmethod
  • 非常感谢!它起作用了:D
  • @SpoonMeiser 另外,如果您不需要使用任何“自我”变量?函数`af(x)`不需要一些类变量,它只计算max(0,x)
  • @Jakob 然后把它移出课堂。
  • @Aran-Fey 类中的某些方法确实需要它,但该函数只接受一个输入并计算那个或 0 的最大值,因此它只需要访问它的输入。跨度>
猜你喜欢
  • 1970-01-01
  • 2019-02-08
  • 1970-01-01
  • 2022-12-04
  • 2015-06-19
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 2012-02-09
相关资源
最近更新 更多