我们知道很多类的使用上有相似的地方,虽然之前在字段上namedtuple是不能添加的,但是在默认值上和数据类一样,我们可以选择默认值进行添加。当然这需要一些代码上的修改,小伙伴们可以先去了解一下数据类的概念,然后再namedtuple的添加上就比较好理解了。下面我们就开始学习今天namedtuple加默认值的方法吧。
数据类可以具有可选值。要模仿的相同行为,namedtuple需要进行一些技巧修改操作。事实证明,我们可以使用继承,如下例所示。from collections import namedtuple
class Color(namedtuple("Color", "r g b alpha")):
__slots__ = ()
def __new__(cls, r, g, b, alpha=None):
return super().__new__(cls, r, g, b, alpha)
>>> c = Color(r=0, g=0, b=0)
>>> c
Color(r=0, g=0, b=0, alpha=None)
拓展:将namedtuples序列化为JSON
有时你可能需要将储存namedtuple转为JSON。Python的字典可以通过json模块转换为JSON。那么我们可以使用_asdict方法将元组转换为字典,然后接下来就和字典一样了。例如:>>> blue = Color(r=0, g=0, b=255, alpha=1.0)
>>> import json
>>> json.dumps(blue._asdict())
'{"r": 0, "g": 0, "b": 255, "alpha": 1.0}'
今天在namedtuple中添加默认值的方法就分享给大家了,同时namedtuple转为JSON的知识点上也非常简单,这里小编把它们放在同一篇中,大家可以一起学习。