是否可以在一行中更新NamedTuple?

时间:2018-08-14 11:43:39

标签: json python-3.x namedtuple

self.u[i]

我知道元组的本质是不可变的,但是我想不出任何提供NamedTuple简洁性的数据对象。

(例如,如果要定义JSON对象的键和值,则可以简单地定义属性,如class Name(NamedTuple): first_name: str last_name: str name: Name = Name(first_name="Guido", last_name="Rossum") updated = {**name._asdict()} updated.update({"last_name": "Fox"}) updated_name: Name = Name(**updated) 所示)

但是,假设我需要先更新属性,然后再保存到数据库中,然后能够在一行中完成该操作会很有用。

1 个答案:

答案 0 :(得分:0)

我认为最好创建自定义类来存储数据,我会这样做:

class Name:
  # use slots
  # https://docs.python.org/3/reference/datamodel.html#slots
  # https://stackoverflow.com/questions/472000/usage-of-slots
  __slots__ = ('first_name', 'last_name')

  def __init__(self, first_name, last_name):
    self.first_name = first_name
    self.last_name = last_name

  def __repr__(self):
    return "{} {}".format(self.first_name, self.last_name)

name: Name = Name('Guido', 'Van Rossum')
print(name)

name.last_name = 'Fox'
print(name)