Python 创建从weakref到pydantic的模型

Python 创建从weakref到pydantic的模型,python,weak-references,pydantic,Python,Weak References,Pydantic,有可能创建一个pydantic模型的weakref吗 from pydantic import BaseModel from uuid import UUID class JEdgeModel(BaseModel): uid: UUID startSocket: UUID destnSocket: UUID a = JEdgeModel(uid='abd6fc3f882544f5b75661c92fccbd0d', startSocket='abd6fc3f88254

有可能创建一个pydantic模型的weakref吗

from pydantic import BaseModel
from uuid import UUID

class JEdgeModel(BaseModel):
    uid: UUID
    startSocket: UUID
    destnSocket: UUID

a = JEdgeModel(uid='abd6fc3f882544f5b75661c92fccbd0d', startSocket='abd6fc3f882544f5b75661c92fccbd0d', destnSocket='abd6fc3f882544f5b75661c92fccbd0d')

wk = weakref.ref(a)
我得到以下错误:
无法创建对“JEdgeModel”对象的弱引用

有没有办法达到同样的效果?

来自

如果每个实例没有weakref变量,则定义插槽的类不支持对其实例的弱引用。如果需要弱引用支持,则将“weakref”添加到slot声明中的字符串序列中

因此,只需将
\uuuuuwakref\uuuuu
添加到模型中的
\uuuuuuu插槽中

class-JEdgeModel(BaseModel):
__槽位=
uid:UUID
startSocket:UUID
去库存:UUID
a=杰吉模型(
uid='abd6fc3f882544f5b75661c92fccbd0d',
startSocket='abd6fc3f882544f5b75661c92fccbd0d',
去库存='abd6fc3f882544f5b75661c92fccbd0d',
)
wk=weakref.ref(a)

Hi:你能再解释一下上下文吗?为什么在这里需要弱引用?您需要将必填字段
\uuuuuwakref\uuuuu
添加到
BaseModel.\uuuuu slots\uuuu
以使类支持弱引用。@DanD。谢谢,如果你回答,我可以把它标记为sollution@jossefaz在创建PyQt应用程序时,我需要传递需要更新的模型的ref。我知道我可以在新窗口中更新模型的副本并将其发送回,但创建相同的weakref可以为我节省一些麻烦。我不确定这样解决问题是否是一种好的做法!