【问题标题】:Python: Self is not definedPython:未定义自我
【发布时间】:2010-10-28 17:36:03
【问题描述】:
class a(object):
 def __init__(self):
         self.b = 1
         self.c = 2

这给出了错误:NameError: name 'self' is not defined

我查看了以前的帖子,但错误是出于不同的原因。有什么帮助吗?

【问题讨论】:

  • 你所拥有的是有效的。我们需要更完整的画面。
  • 问题中的代码有效。顺便说一句,按照惯例,类名以大写字母开头
  • @Nathon:我撤消了您的编辑,因为缩进正是代码的问题所在,而修复缩进使这个问题完全没有意义。
  • 你在哪一行得到 NameError (是的,我怀疑它太相关了,但是......)。请附加完整的堆栈跟踪。
  • 这能回答你的问题吗? "NameError: name 'self' is not defined"

标签: python


【解决方案1】:

我假设def __init__(self): 之前的单个空格实际上是您文件中的一个选项卡,并由您的编辑器显示为四个空格。

但是,python 将制表符解释为 8 个空格,因此 python 认为以下两行(缩进 8 个空格)与def 处于同一缩进级别。

这正是您不应该混合制表符和空格的原因。

【讨论】:

  • 我认为这会产生 IndentationError,因为 def 需要一个主体。
  • 他可能删掉了前面几行以“举个最简单的例子”。
  • @Nick:是的,前面的行缩进了两个制表符。一定是这样的。
【解决方案2】:

这只是一个猜测,因为您没有发布实际的回溯或代码,但如果上面的实际 sn-p 给您带来问题,则可能是您的缩进关闭并且解释器错误地解释了您的范围级别。

【讨论】:

  • 老鼠,sepp2k 类型的速度显然比我快:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 2014-10-10
  • 2010-12-20
  • 1970-01-01
相关资源
最近更新 更多