【发布时间】:2020-02-27 03:39:06
【问题描述】:
attr.ib 采用 repr 参数,该参数可能是布尔型或可调用的。
要覆盖属性值的格式,请传递一个可调用的,它接受单个值并返回一个字符串。请注意,生成的字符串按原样使用,即直接使用它而不是调用
repr()(默认值)。
传递datetime.datetime.fromisoformat()时似乎不是这样:
import datetime
import attr
@attr.s
class Test(object):
foo: str = attr.ib()
dt: datetime.datetime = attr.ib(repr=datetime.datetime.isoformat)
结果:
>>> t = Test(foo='bar', dt=datetime.datetime.utcnow())
>>> t
Test(foo='bar', dt=datetime.datetime(2019, 10, 31, 17, 59, 34, 603971))
预期:
Test(foo='bar', dt='2019-10-31T17:59:34.603971')
事实上,看起来任何参数都被忽略了。以下是 attr 文档中示例的轻微修改:
>>> @attr.s
... class C(object):
... user = attr.ib()
... password = attr.ib(repr=lambda value: value[:2])
...
>>> C("me", "s3kr3t")
C(user='me', password='s3kr3t')
我在这里错过了什么?
【问题讨论】:
标签: python python-3.x python-attrs