Просмотр приведения подкласса ndarrayPython

Программы на Python
Anonymous
Просмотр приведения подкласса ndarray

Сообщение Anonymous »

Я создаю подкласс numpy ndarray — назовем его полем — где с ndarray связана дополнительная информация. В пользовательском коде данные в массиве имеют значение только вместе с дополнительной информацией (которая представляет собой сетку/сетку, ndarray содержит узловые значения поля в этой сетке).
Итак, насколько мне известно, единственный законный способ получить поле — это либо явный конструктор, либо поле, созданное из шаблона. Действительно, приведение представлений подразумевает, что будет поле без сетки, что в контексте не имеет смысла. Если данные поля обрабатываются только как данные, то это больше не поле.
Есть ли причины, по которым меня все еще должна волновать возможность вызовов приведения представления моему подклассу?
РЕДАКТИРОВАТЬ
Теперь я отмечаю, что (а) «нереалистичный» и (б) «немного более реалистичный» примеры doc используют разные конструкторы для базового объекта.
(a)

Код: Выделить всё

    # Create the ndarray instance of our type, given the usual
# ndarray input arguments.  This will call the standard
# ndarray constructor, but return an object of our type.
# It also triggers a call to InfoArray.__array_finalize__
obj = super().__new__(subtype, shape, dtype,
buffer, offset, strides, order)
(б)

Код: Выделить всё

     # We first cast to be our class type
obj = np.asarray(input_array).view(cls)
Итак, во втором случае это кастинг представлений. Почему это изменение? В документе это не прокомментировано.

Подробнее здесь: https://stackoverflow.com/questions/786 ... y-subclass

Вернуться в «Python»