意外缩进和其他错误

2024-06-12 06:21:44 发布

您现在位置:Python中文网/ 问答频道 /正文

class Pacco:
    STATES = ('Il pacco e` stato ordinato ma non ancora spedito',
              'Il pacco e` stato spedito ma non ancora ricevuto',
              'Il pacco e` stato ricevuto')
    indice = 0
    
    def __init__(self):
        self.state = Pacco.STATES[0]
        self._succ = Pacco.STATES[1]
        self._prec = None

    def next(self):
        print(self.state)

    @property
    def state(self):
        Pacco.indice += 1
        self.state = Pacco.STATES[Pacco.indice]
        self._succ = Pacco.STATES[Pacco.indice+1]
        self._prec = Pacco.STATES[Pacco.indice-1]

indice = 0它给我错误Unexpected indent,在Pacco.indice += 1行它给我错误

Unindent does not match any outer indentation level

在接下来的3行,它给出了误差

Unresolved reference 'self'...

有人能告诉我为什么吗


Tags: selfdefilstatenonstatesmaindice
3条回答

首先,将所有预定义变量保留在__init__函数中。其次,self.state变量需要是self._state,因为存在同名函数。第三,参考@wjandrea's answer了解他关于制表符和空间格式的建议。代码应如下所示:

class Pacco:
    
    def __init__(self):
        self.STATES = ('Il pacco e` stato ordinato ma non ancora spedito',
                       'Il pacco e` stato spedito ma non ancora ricevuto',
                       'Il pacco e` stato ricevuto')
        self.indice = 0
        self._state = self.STATES[0]
        self._succ = self.STATES[1]
        self._prec = None

    def next(self):
        print(self.state)

    @property
    def state(self):
        self.indice += 1
        self._state = self.STATES[self.indice]
        self._succ = self.STATES[self.indice+1]
        self._prec = self.STATES[self.indice-1]

您混合了制表符和空格。将所有制表符转换为空格(per PEP 8),语法工作正常

注意:堆栈溢出格式化程序将制表符转换为四个空格,因此您无法在文章中看到它,但如果您选中source,则可以看到它

您可以使用autopep8

pip install autopep8

现在在终端中键入autopep8 <yourfile.py>,然后输入

请注意,代码现在将以正确的方式格式化

相关问题 更多 >