isoweek.Week是如何实现json编码的(python2)
如果我从中实例化一个“周”,如下所示:isoweek.Week是如何实现json编码的(python2),python,json,Python,Json,如果我从中实例化一个“周”,如下所示: from isoweek import Week week = Week(2015,24) 然后,week是一个json可序列化的: >>>json.dumps(week) >>>'[2015, 25]' 周班是如何做到这一点的 (isoweek.Week继承自namedtuple,它不可json序列化。) 编辑:显然namedtuple是json可序列化的,但这给我留下了一个问题:它是如何做到这一点的 继承自na
from isoweek import Week
week = Week(2015,24)
然后,week
是一个json可序列化的:
>>>json.dumps(week)
>>>'[2015, 25]'
周班是如何做到这一点的
(isoweek.Week继承自namedtuple,它不可json序列化。)
编辑:显然namedtuple是json可序列化的,但这给我留下了一个问题:它是如何做到这一点的 继承自namedtuple,它不可json序列化 我认为这是错误的,请参见:
from collections import namedtuple
import json
week = namedtuple("week", ['year', 'week'])
w = week(2015, 15)
print json.dumps(w)
[2015, 15]
从namedtuple
工厂生成的类的实例是从tuple
派生的,因此:
我自己也试过了,但是初始化命名的元组时出错了。我的错。那么
namedtuple
实际上是一个类工厂,而不是一个类?但是您的示例中的week
已经是一个类的实例了,或者我在这里感到困惑了吗?值得查看collections.py中的源代码。首先要进行大量的验证和处理,但是namedtuple()
的核心涉及一个模板字符串,该字符串的格式包含新类型的详细信息,即exec
ed在命名空间中,动态创建tuple的一个新子类(作为namedtuple()的返回值返回)
函数。在本例中,week
是由namedtuple()
fn创建的新类。
isinstance(w, tuple)
True