NamedTuple, 中文名称为 具名元组, 使用此函数可以创建一个可读性更强的元组
在使用普通元组的时候,我们只能通过index来访问元组中的某个数据, 使用NamedTuple的时候, 可以采用这两种方式进行访问:1. 通过索引index访问; 2. 通过.xx属性访问
创建NamedTuple类, 用来构建NamedTuple的实例对象, 有以下两种方法
方法1: 直接调用NamedTuple
from torch import Tensor
from typing import NamedTuple
QTensor = NamedTuple('QTensor', ['data', 'scale', 'dtype'])
# 指定对应元素的数据类型
# python version >= 3.6
QTensor = NamedTuple('QTensor', data=Tensor, scale=Tensor, dtype=str)
# python version <= 3.5
QTensor = NamedTuple('QTensor', [('data', Tensor), ('scale', Tensor), ('id', str)])
# 创建实例, 访问元素
temp_qtensor = QTensor(1, 2, 'int')
temp_qtensor[0] == temp_qtensor.data == 1
方法2: 派生类(推荐)
from torch import Tensor
from typing import NamedTuple
class QTensor(NamedTuple):
data: Tensor
scale: Tensor
dtype: str
# 可以定义一些扩展函数或者访问属性等
@property
def shape(self):
return self.data.shape
temp_qtensor = QTensor(1, 2, 'int')
temp_qtensor[0] == temp_qtensor.data == 1