我有一个如下所示的类
class ExperimentResult(BaseDataObject):
def __init__(self, result_type: str, data: dict, references: list):
super().__init__()
self.type = result_type
self.references = references
self.data = data
def __repr__(self):
return str(self.__dict__)
代码是用 python 3 编写的,而我尝试在 python 2 中运行它。 当我运行它时,我得到
def __init__(self, result_type: str, data: dict, references: list):
^
SyntaxError: invalid syntax
是否有“import_from_future”来解决这个问题?
你看到的错误是由于 Python 2 中不支持 类型提示 造成的。类型提示是在 Python 3 中引入的,它允许你在函数参数和返回值中指定类型。
在你的代码中,
result_type: str
、
data: dict
和
references: list
都是类型提示。Python 2 不理解这些,所以会引发
SyntaxError
。
你有几个选择来解决这个问题:
-
如果可以的话,使用 Python 3 运行代码。 这是最简单的解决方案,因为你的代码已经是有效的 Python 3 代码。
-
如果必须使用 Python 2,请删除类型提示。 这将使你的代码与 Python 2 兼容,但你会失去类型提示的好处。你的代码如下所示:
class ExperimentResult(BaseDataObject):
def __init__(self, result_type, data, references):
super().__init__()
self.type = result_type
self.references = references
self.data = data
def __repr__(self):
return str(self.__dict__)
-
使用类型注释工具,如
MyPy
。 这将允许你在 Python 2 代码中使用类型提示,但你需要使用MyPy
等工具来分别检查类型。
没有
import_from_future
可以解决这个问题。
__future__
模块允许你使用在未来 Python 版本中引入的特性,但它不能用于引入在以前版本中不存在的特性,比如类型提示。