def __missing__(self, key: t.Union[t.Tuple[int, type], t.Tuple[int, type, t.Sequence[int]]]):
if not isinstance(key, tuple):
raise TypeError('key={} of bad type {} was given'.format(repr(key), type(key)))
if len(key) < 2 or len(key) > 3:
raise ValueError('{}'.format(key))
if not isinstance(key[0], int):
raise TypeError()
if key[0] <= 0:
raise ValueError()
if not isinstance(key[1], type):
raise TypeError()
if len(key) == 3:
if not isinstance(key[2], tuple):
raise TypeError()
if len(key[2]) != key[0]:
raise ValueError()
if any(k is not Ellipsis and not isinstance(k, int) for k in key[2]):
raise TypeError()
if any(k is not Ellipsis and k <= 0 for k in key[2]):
raise ValueError()
value = create_typed_numpy_ndarray(*key)
self[key] = value
return value
评论列表
文章目录