在做学校项目时。我遇到了这个错误
>>> 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修复了代码?