Python中使用 dataclass 如何将两个类关联到一起

问题

现在有这样的一个字典数据,想使用 @dataclass 的方式来实现,但是没有实现出来,请问怎么实现?

{   "id":0,
    "name":"小明",
    "pets":[
       {"id":1, "name":"dog"}
    ]
}

现在创建两个类

from dataclasses import dataclass, asdict


@dataclass
class Pet:
    id:int = 0
    name:str = None

@dataclass
class Person:
    id:int = 0
    name: str = None
    pets = list[Pet] # 希望用来表示列表 中存储类


if __name__ == '__main__':
    p = Pet()
    p.id = 1
    p.name = "dog"

    user =Person()
    user.id = 1
    user.name = "小明"
    user.pets.append(p)

    print(asdict(user))

运行结果

报错信息

报错

Traceback (most recent call last):
  File "/Users/zack/PycharmProjects/goods.py", line 24, in <module>
    user.pets.append(p)
TypeError: descriptor 'append' for 'list' objects doesn't apply to a 'Pet' object

环境

Mac Python3.10

new_ Person= Person()
new_ Person. pets.append(Pet([xxxxx]))

不添加默认值的情况

from dataclasses import dataclass
from typing import List

@dataclass
class Children:
    name: str
    age: int

@dataclass
class Father:
    name: str
    children: List[Children]


Bob = Children(name="Bob", age=11)
Marry = Children(name="Marry", age=11)

Dad = Father(name="David", children=[Bob, Marry])
print(Dad)

添加默认值的语法

from dataclasses import dataclass, field
from typing import List

@dataclass
class Children:
    name: str
    age: int

@dataclass
class Father:
    name: str = field(default="Bob")
    children: List[Children] = field(default_factory=list)


Bob = Children(name="Bob", age=11)
Marry = Children(name="Marry", age=11)

Dad = Father(children=[Bob, Marry])
print(Dad)

谢谢