如何解决为 pydantic 模型创建一个弱引用
是否可以创建一个 pydantic 模型的弱引用?
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)
我收到以下错误:
cannot create weak reference to 'JEdgeModel' object
有没有办法达到同样的目的?
解决方法
如果每个实例没有 weakref 变量,定义 slots 的类不支持对其实例的弱引用。如果需要弱引用支持,则在 slots 声明中的字符串序列中添加“weakref”。
因此只需将 __weakref__
添加到您模型中的 __slot__
class JEdgeModel(BaseModel):
__slots__ = ['__weakref__']
uid: UUID
startSocket: UUID
destnSocket: UUID
a = JEdgeModel(
uid='abd6fc3f882544f5b75661c92fccbd0d',startSocket='abd6fc3f882544f5b75661c92fccbd0d',destnSocket='abd6fc3f882544f5b75661c92fccbd0d',)
wk = weakref.ref(a)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。