Эквивалент вызова метода массива объектов Matlab в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Эквивалент вызова метода массива объектов Matlab в Python

Сообщение Anonymous »

В Matlab есть массивы объектов, в Python — списки или кортежи.
Вызвать метод класса для массива объектов этого класса в Matlab легко:

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

A = [Class1(1), Class1(2)];

B = A.toClass2();
см. здесь «Вызов методов в массиве объектов».
В Python это не может быть передано 1 к 1, потому что во второй строке интерпретатор будет искать метод toClass2() в классе List, но не найдет (->ошибка).
Я обнаружил, что эту проблему можно решить вне определения этого метода, на стороне пользователя, вызвав его в цикле for, распознавании списка, отображении функции или лямбда-функции или даже с помощью numpy.vectorize(), см. это.
Каждое из этих решений подразумевает более тяжелый синтаксис для пользователя сторона, и еще чего-то не хватает; что, если я хочу, чтобы метод Class1.toClass2() мог сам решать, как обрабатывать список нескольких объектов, полученных в качестве входных данных.
Например, метод Class1.Sum() будет логически суммировать все элементы, к которым он применяется. и вернуть один объект, тогда как другой, выполняющий какое-либо преобразование, например Class1.toClass2(), может также возвращать массив новых объектов.
В качестве альтернативы можно сделать так, чтобы метод toClass2() также принимал a List в качестве самостоятельного ввода и вызовите его явно во второй строке списка A, используя:

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

B = Class1.toClass2(A)
Это позволяет методам выбирать, как обрабатывать входные данные списка, но генерирует немного более сложный синтаксис на стороне пользователя.
Кто-нибудь видит другое решение?
Может быть, есть один, использующий декораторы методов, декораторы классов или даже подклассы класса List.
Иначе, в более общем плане, как адаптировать это мышление проектирования архитектуры ООП программного обеспечения из массивов Matlab в Python Вселенная?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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