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

为什么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为什么要做这种转换


回答:

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

以上是 为什么namedtuple的_make方法把datetime object转成了str 的全部内容, 来源链接: utcz.com/p/937810.html

回到顶部