python中的具名元组collections.namedtuple
from collections import namedtuple
# 具名元组是collections.namedtuple中的一个工厂函数,
# 用来构建一个带字段名的元组和一个有名字的类
City = namedtuple("City", "city country pop coordinates")
tokyo = City("Tokyo", "JP", "36.6", (35.6, 129.7))
print(type(tokyo))
print(tokyo.pop)
print(tokyo[1])
# 结果
# City(city='Tokyo', country='JP', pop='36.6', coordinates=(35.6, 129.7))
# 36.6
# JP
# _field 属性是一个包含这个类所有字段名称的元组
print(City._fields)
# 结果
# ('city', 'country', 'pop', 'coordinates')
Latlong = namedtuple("Latlong","lat long")
delhi_data = ("Delhi","IN",21.5,Latlong(28.1,77.8))
# _make()通过接受一个可迭代对象来生成这个类的一个实例,他的作用和City(*delhi_data)一样
# delhi = City._make(delhi_data)
delhi = City(*delhi_data)
print(delhi)
# 结果
# City(city='Delhi', country='IN', pop=21.5, coordinates=Latlong(lat=28.1, long=77.8))
# _asdict把具名元组以collections.OrdereDict的形式返回,
print(delhi._asdict())
# 结果
# OrderedDict([('city', 'Delhi'), ('country', 'IN'), ('pop', 21.5), ('coordinates', Latlong(lat=28.1, long=77.8))])