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'...
誰か理由を教えてもらえますか?
Python 2 を学習していますか?可能であれば、代わりに Python 3 を学習することをお勧めします。Python 2 は 2020 年の初めに EOL になり、いずれにしても 3 の方がずっと優れています。ところで、SO へようこそ!ツアーと、アドバイスが必要な場合の質問方法をご覧ください。
– ウィジャンドレア
2020 年 9 月 5 日 1:38
------------------------
タブとスペースが混在しています。すべてのタブをスペースに変換すると (PEP 8 に従って)、構文は正常に機能します。
注: Stack Overflow フォーマッタはタブを 4 つのスペースに変換するため、投稿では確認できませんが、ソースを確認すると確認できます。
1
タブをスペースに置き換えたら問題は解決しました。ありがとう
– user14223968
2020 年 9 月 5 日 1:36
------------------------
まず、事前定義された変数をすべて __init__ 関数内に保持します。次に、同じ名前の関数があるため、self.state 変数は self._state である必要があります。第三に、タブとスペースの書式設定に関するアドバイスについては、@wjandrea の回答を参照してください。コードは次のようになります:
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]
2020 年 9 月 5 日 1:32 に回答
ニューオプス
ニューオプス
342
3
銀バッジ 3 個
16
16 個の銅バッジ
------------------------
autopep8 を使用できます
pip install autopep8
ここで autopep8 <yourfile.py> と入力します。ターミナルに入力して
コードが正しい方法でフォーマットされることを確認してください