为什么namedtuple的_make方法把datetime object转成了str

定义了一个namedtuple,使用_make创建对象,时间对象会被转成str,这是怎么回事?

from datetime import datetime
from collections import namedtuple

MyTuple = namedtuple('MyTuple', 'time')

my_tuple = MyTuple._make({'time': datetime.now()})
my_tuple2 = MyTuple(time=datetime.now())

print(type(my_tuple.time))
print(type(my_tuple2.time))

结果分别是

<class 'str'>
<class 'datetime.datetime'>

这两者不应该一样吗?或者说_make为什么要做这种转换

阅读 1.5k
1 个回答

没转换...
_make()方法接收的是一个iterable
当字典作为一个iterable时,实际上是key的迭代器...
所以my_tuple.time存的是"time"这个字符串(也就是dict的key),而不是datetime.now()

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题