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')
我在这里想念什么?