我想用Python编写一个数据类定义,但不能在声明中引用同一个类。
我主要想实现的是这种嵌套结构的类型化,如下所示:
@dataclass
class Category:
title: str
children: [Category] # I can't refer to a "Category"
tree = Category(title='title 1', children=[
Category('title 11', children=[]),
Category('title 12', children=[])
])
发布于 2021-11-01 12:41:27
选项#1
您可以将类名包装在一个字符串中,以便向前声明注释:
from dataclasses import dataclass
from typing import List
@dataclass
class Category:
title: str
children: List['Category']
选项#2
您可以包含一个__future__
导入,以便默认情况下所有注释都是正向声明的,如下所示。在这种情况下,您还可以在Python3.7及更高版本中消除typing
导入并使用新样式的批注。
from __future__ import annotations
from dataclasses import dataclass
@dataclass
class Category:
title: str
children: list[Category]
https://stackoverflow.com/questions/69802491
复制