0

SublimeREPL でいくつかの Python コマンドを評価しようとしていますが、すべての新しいコマンドで IndentationError が発生します。一度に 1 行ずつ送信すると、コードは機能します。

これが例の試みです...

class Array(object):
    def __init__(self, length = 0, baseIndex = 0):
        assert(length >= 0)
        self._data = [0 for i in range(length)]
        self._baseIndex = baseIndex
    def __copy__(self):
        result = Array(len(self._data))
        for i, datum in enumerate(self._data):
            result._data[i] = datum
        result._baseIndex = self._baseIndex
        return result
    def __len__(self):
        return len(self._data)

これは次のように評価されます...

IndentationError: unexpected indent
>>> class Array(object):
...     def __init__(self, length = 0, baseIndex = 0):
...         assert(length >= 0)
...         self._data = [0 for i in range(length)]
...         self._baseIndex = baseIndex
... 
>>>     def __copy__(self):
  File "<stdin>", line 1
    def __copy__(self):
    ^
IndentationError: unexpected indent
>>>         result = Array(len(self._data))
  File "<stdin>", line 1
    result = Array(len(self._data))
    ^
IndentationError: unexpected indent
>>>         for i, datum in enumerate(self._data):
  File "<stdin>", line 1
    for i, datum in enumerate(self._data):
    ^
IndentationError: unexpected indent
>>>             result._data[i] = datum
  File "<stdin>", line 1
    result._data[i] = datum
    ^
IndentationError: unexpected indent
>>>         result._baseIndex = self._baseIndex
  File "<stdin>", line 1
    result._baseIndex = self._baseIndex
    ^
IndentationError: unexpected indent
>>>         return result
  File "<stdin>", line 1
    return result
    ^
IndentationError: unexpected indent
>>> 
>>>     def __len__(self):
  File "<stdin>", line 1
    def __len__(self):
    ^
IndentationError: unexpected indent
>>>         return len(self._data)
  File "<stdin>", line 1
    return len(self._data)
    ^
IndentationError: unexpected indent

ただし、各行の前にいくつかの行コメント文字を入れると、末尾の「... ... ... ...」を除いて正常に機能します

class Array(object):
    def __init__(self, length = 0, baseIndex = 0):
        assert(length >= 0)
        self._data = [0 for i in range(length)]
        self._baseIndex = baseIndex
#
    def __copy__(self):
        result = Array(len(self._data))
        for i, datum in enumerate(self._data):
            result._data[i] = datum
        result._baseIndex = self._baseIndex
        return result
#
    def __len__(self):
        return len(self._data)
#

送信後、REPL ウィンドウに切り替えて、「... ... ... ...」の行で Enter キーを押して評価する必要があります。

>>> class Array(object):
    def __init__(self, length = 0, baseIndex = 0):
        assert(length >= 0)
        self._data = [0 for i in range(length)]
        self._baseIndex = baseIndex
#
    def __copy__(self):
        result = Array(len(self._data))
        for i, datum in enumerate(self._data):
            result._data[i] = datum
        result._baseIndex = self._baseIndex
        return result
#
    def __len__(self):
        return len(self._data)
#
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 

私はPythonを初めて使用するので、非常に単純なものが欠けている場合は申し訳ありません. 私はこの答えをどこでも探してみました。

4

1 に答える 1