namedtuple

    我们知道 tuple 可以表示不变集合,例如,一个点的二维坐标就可以表示成:

    >>> p = (1, 2)

    但是,看到 (1, 2) ,很难看出这个 tuple 是用来表示一个坐标的。

    定义一个class又小题大做了,这时, namedtuple 就派上了用场:

    >>> from collections import namedtuple

    >>> Point = namedtuple('Point', ['x', 'y'])

    >>> p = Point(1, 2)

    >>> p.x

    1

    >>> p.y

    2

    namedtuple 是一个函数,它用来创建一个自定义的 tuple 对象,并且规定了 tuple 元素的个数,并可以用属性而不是索引来引用 tuple 的某个元素。

    这样一来,我们用 namedtuple 可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。

    可以验证创建的 Point 对象是 tuple 的一种子类:

    >>> isinstance(p, Point)

    True

    >>> isinstance(p, tuple)

    True

    类似的,如果要用坐标和半径表示一个圆,也可以用 namedtuple 定义:

    # namedtuple('名称', [属性list]):

    Circle = namedtuple('Circle', ['x', 'y', 'r'])