学校のプロジェクトに取り組んでいる間。私はこのエラーに遭遇しました
>>> y = tokens.numberToken('1.23')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "tokens.py", line 10, in __init__
self._value = v
ValueError: invalid literal for int() with base 10: '1.23'
コードのこのセクションまでさかのぼって
class token:
def type(self):
return "UNDEF"
def getValue(self):
pass
class numberToken(token):
_value = "0.0"
def __init__(self, v = "0.0"):
self._value = v
def type(self):
return "num"
def getValue(self):
try:
r = int(_value)
except ValueError:
r = float(_value)
return r
getValue(self) の _value は self._value である必要があることに気付きました。これはおそらく無関係だと考えて修正しましたが、モジュールをリロードすると、コードは完全に実行されました。
だから私の質問は、なぜPythonが入力された文字列をintに変換しようとしたのか、そしてなぜ他の関数で_valueをself._valueに変更するとコードが修正されたのですか?