API reference
Core
dataioc.DataIoC
logger
property
with_data(*data)
add(data_type, data=None)
add_provider(data_type, provider)
find_builder(dtype)
查找构造器
-
直接以类别指定的构造器:适用于所有id下的 IndexedDataTypeDescriptor ,可以通用
-
以特定 DataDescriptor 指定的构造器:只适用于特定的 DataDescriptor
dataioc.DataDescriptor
Bases: Generic[DataT]
用于在DataIoC中唯一标识一个数据和/或构造数据的数据类型描述符
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id
|
数据id |
DefaultWeakID
|
Notes
DataDescriptor 需要作为字典的键,因此子类需要保证可哈希与可比较。
如果每个成员变量均满足条件,则子类自动满足该条件。
相同类型的多个不同数据可以通过id来区分,不显式指定时默认为 0 。
例如三个个同类型的传感器读数可以使用 Sensor 、 Sensor[1] 和 Sensor[2] 来标识,
此时他们在 DataIoC 中可以映射到不同的数据上。
Examples:
默认创建的数据类型描述符例如 Sensor 具有弱id,用于指示数据类型。
在 build 中使用这类描述符提取数据,会自动重映射到具体的id索引。
>>> from dataioc import DataDescriptor, DataIoC, DataNDArray
>>>
>>> class SensorData(DataNDArray):
... def __new__(cls, data, **kwargs):
... return super().__new__(cls, data, **kwargs)
>>>
>>> class Sum(DataDescriptor):
... def __build__(self, container: DataIoC):
... return container[SensorData].sum() # SensorData 和 Sum 具有相同的id
>>>
>>> container = DataIoC().with_data(
... SensorData([1, 1, 1]), SensorData[1]([2, 2, 2])
... )
>>> print(container[Sum[0]], container[Sum[1]])
3 6
手动指定索引的数据类型描述符例如 Sensor[1] 具有强id,指示某组具体的数据,
在 build 中不会被重新映射。
>>> class OffsetSensor0(DataDescriptor):
... def __build__(self, container: DataIoC):
... base = container[SensorData[0]].sum() # 显式获取 0 号 SensorData
... return base + container[SensorData]
>>>
>>> print(container[OffsetSensor0[0]], container[OffsetSensor0[1]])
[4 4 4] [5 5 5]
index(new_index, weak=True)
将当前数据描述符绑定到新的id索引,以实现关联同类别的不同数据
例如三个个同类型的传感器读数可以使用:
- Sensor[0]
- Sensor[1]
- Sensor[2]
标识
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
new_index
|
新的数据索引 |
required | |
weak
|
是否为弱绑定,弱绑定下,如果目标为强索引,则索引失效 |
True
|
Returns:
| Type | Description |
|---|---|
新的索引id的数据类型
|
|
__getitem__(index)
直接强制绑定为新的id索引
Notes
内部代码应优先使用 index_implicit 以支持弱id的自动重绑定。
dataioc.IndexedData
dataioc.UniqueData
NumPy
dataioc.DataNDArray
Bases: ndarray, IndexedData