Skip to main content
 首页 » 编程设计

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

2025年05月04日8dudu

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

我正在调试一个运行“良好”的脚本(除了所说的间歇​​性错误),突然之间无法再导入该模块。我撤消了所有更改,但问题仍然存在。 好吧,问题S。复数。

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

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

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

大多数时候,它会给我一个错误,提示“ session ”未定义。这是真实的。我只是导入模块。它在调用它的脚本运行时被定义。我尝试完全删除该行,然后它告诉我未定义“self”。

所有这些都是 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 

编辑:已解决。好的,不知何故,在编辑时,我确实不小心在制表符和间距之间切换,这导致了问题。我完全按照上面粘贴的方式删除并重新编写了该代码块,现在它可以正常工作了。存在重影缩进问题。

双重编辑:核心问题是我最近才在 Vim 中打开自动缩进。我使用的配置没有使用制表符作为自动缩进,但我过去使用过制表符。

请您参考如下方法:

你遇到了缩进问题。

self.session = session行和下面的所有内容都不在您的 __init__ 中方法,它就在class里面 body 。

session未在类主体中定义,仅在 __init__ 内定义,正如你在问题中提到的,所以你得到了错误。

如果删除该行,首先查找的是 self在self.players = self.session.listof.players.split(',') , 所以你得到 self未定义错误。