attr
从生成的__init__
方法的属性名称中去除前导下划线。有没有办法为特定属性覆盖它,而不是完全禁用类的自动生成初始化方法?
我想使用attr
类来表示 MongoDB 文档,它在 Python 中是带有_id
记录唯一 ID 的键的字典。我希望能够拥有一个仅比 .from_db(cls, doc)
多一点的类方法return cls(**doc)
,但是存在_id
原因“TypeError:init () got an unexpected keyword argument '_id'”。现在,我通过声明 `_id: attr.ib(init=False, default=None) 来解决它,并具有:
@classmethod from_db(cls, doc):
_id = doc["_id"]
del(doc["_id"])
obj = cls(**doc)
obj._id = _id
return obj
但这似乎真的很糟糕。有没有更好的办法?