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