我不完全确定发生了什么。
我正在调试一个工作“很好”的脚本(除了所说的间歇性错误),突然之间模块再也无法导入了。我解除了所有的变化,但问题仍然存在。 好吧,问题。复数。
一旦出现“意外缩进”错误,即使所有行都完美缩进。我通过删除该行并重新输入来修复该问题。
现在在下面的代码中,我得到两个错误之一:
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中启用了自动缩进功能。我使用的配置不是使用制表符作为自动缩进,但我过去使用制表符。
答案 0 :(得分:1)
你有缩进问题。
self.session = session
行以及下面的所有内容都不在__init__
方法的内部,而是在class
正文中。
session
未在类正文中定义,仅在__init__
内定义,正如您在问题中提到的那样,因此您会收到错误。
如果删除该行,则首先查找的是self
中的self.players = self.session.listof.players.split(',')
,因此您的self
未定义错误。