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

