打开VIM自动缩进后,Python解释器无法正确读取缩进

时间:2011-09-23 00:00:20

标签: python interpreter

我不完全确定发生了什么。

我正在调试一个工作“很好”的脚本(除了所说的间歇​​性错误),突然之间模块再也无法导入了。我解除了所有的变化,但问题仍然存在。 好吧,问题。复数。

一旦出现“意外缩进”错误,即使所有行都完美缩进。我通过删除该行并重新输入来修复该问题。

现在在下面的代码中,我得到两个错误之一:

class Lottery:
    def __init__(self, session):
          self.prizes = PrizeList()
          self.session = session
          self.players = self.session.listof.players.split(',')
          self.pickWinner()

大多数时候,它给我一个错误,说“会话”没有定义。这是真的。我只是导入模块。它在调用它的脚本运行时被定义。我试图完全删除该行,然后它告诉我“自我”没有定义。

所有这些都是20分钟前正在运行的原始代码。我正在修复的错误完全在这个模块的不同部分,它肯定是导入没有问题。请帮忙!

回溯:

  File "minecraft/mcAdmin.py", line 5, in <module>
    from lottery.lottery import *
  File "/home/tomthorogood/minecraft/lottery/lottery.py", line 36, in <module>
    class Lottery:
  File "/home/tomthorogood/minecraft/lottery/lottery.py", line 39, in Lottery
    self.session = session
NameError: name 'session' is not defined

编辑:已解决。好吧,不知怎的,在编辑时,我做了意外地在标签和间距之间切换,这导致了问题。我删除并重新编写了完全粘贴在上面的代码块,现在它正在工作。有一个鬼缩进问题。

DOUBLE EDIT:核心问题是我最近才在Vim中启用了自动缩进功能。我使用的配置不是使用制表符作为自动缩进,但我过去使用制表符。

1 个答案:

答案 0 :(得分:1)

你有缩进问题。

self.session = session行以及下面的所有内容都不在__init__方法的内部,而是在class正文中。

session未在类正文中定义,仅在__init__内定义,正如您在问题中提到的那样,因此您会收到错误。

如果删除该行,则首先查找的是self中的self.players = self.session.listof.players.split(','),因此您的self未定义错误。