You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cython编译后dataclass字段类型显示为字符串的问题咨询

问题:Cython编译dataclass后字段类型显示异常

以下是一段简单的dataclass代码:

from dataclasses import dataclass, field, fields

@dataclass
class Test():

    _id: ObjectId = field(init=False)

    def __post_init__(self):
        self._id = ObjectId()

tt = Test()
fields(tt)

直接在Python中运行该代码,得到的Field对象信息如下:

(Field(name='_id',type=<class 'bson.objectid.ObjectId'>,default=<dataclasses._MISSING_TYPE object at 0x7ff1d30f6760>,default_factory=<dataclasses._MISSING_TYPE object at 0x7ff1d30f6760>,init=False,repr=True,hash=None,compare=True,metadata=mappingproxy({}),_field_type=_FIELD),)

但使用Cython 3.0.0a11编译后运行,得到的结果是:

(Field(name='_id',type='ObjectId',default=<dataclasses._MISSING_TYPE object at 0x7f80335335b0>,default_factory=<dataclasses._MISSING_TYPE object at 0x7f80335335b0>,init=False,repr=True,hash=None,compare=True,metadata=mappingproxy({}),_field_type=_FIELD),)

可以看到,_id的类型在Python中显示为<class 'bson.objectid.ObjectId'>,但Cython编译后变成了字符串'ObjectId'。请问这是操作有误,还是Cython存在Bug?我已在GitHub提交Issue。

内容的提问来源于stack exchange,提问作者toing_toing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 01:20:32