gpt4 book ai didi

Python 3.10 类型提示导致语法错误

转载 作者:行者123 更新时间:2023-12-05 01:23:35 25 4
gpt4 key购买 nike

我定义了两个类。一个 Bookshelf 类和一个 Book 类,每个类都定义了自己的方法和类型提示。当我使用 python 3.10 在 VS Code 中运行以下代码时,出现以下错误:

class Bookshelf: 
SyntaxError: Invalid syntax

它指的是下面的 BookShelf 类的初始化。你们中有人能发现问题吗?

class Bookshelf:

def __init__(self, books: list[Book]):
self.books = books

def __str__(self) -> str:
return f"Bookshelf with {len(self.books)}"


class Book:
def __init__(self, name: str, page_count: int):
self.name=name
self.page_count = page_count

最佳答案

它不是SyntaxError,而是NameError,因为当您在类型提示中使用它时,Book 类还没有定义.

<强>1。第一个解决方案是将 Book 类的定义移到 BookShelf 之前。

<强>2。第二种解决方案 是使用字符串而不是 book 本身:

def __init__(self, books: list["Book"]):

我认为在 Python 3.11 中,他们将允许按原样使用它。类型注释的评估将被推迟:

https://peps.python.org/pep-0563/

<强>3。第三种解决方案:如果你现在想拥有这个,你可以导入:

from __future__ import annotations

那么您的代码就可以工作了。

关于Python 3.10 类型提示导致语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72243698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com