2016-01-07 1 views
1

Я работаю с классом, как это:Как звонить «__call __()» метод класса питона из MATLAB

class Select(object):  
    def __init__(self, interface): 
     ... 

    def project(self, ID): 
     ... 

    def __call__(self, datatype_or_path): 
     ... 

Когда я пытаюсь вызвать этот метод (в основном функтор) из Matlab, как:

select = Select(blah); 
select('blah'); 

Я получаю следующее сообщение об ошибке:

Array formation and parentheses-style indexing with objects of class 
'py.pyxnat.core.select.Select' is not allowed. Use objects of class 
'py.pyxnat.core.select.Select' only as scalars or use a cell array. 

EDIT:

select.('__call__')('blah'), кажется, не работает, либо

ответ

1

От Matlab Технической поддержки:

My name is sai and I am writing in reference to your Technical Support Case #01708094 regarding 'Calling python functors through matlab'.

I understand that you are experiencing issues while invoking a functor defined in python from MATLAB.

I see that you are using MATLAB R2014b. Please note that this is a known issue in MATLAB R2014b which has been fixed in MATLAB R2015a and there are no known work arounds for this issue in R2014b. If it is feasible, I would recommend to upgrade to MATLAB R2015a which will help you resolve this issue.

+0

Вы также можете принять свой собственный ответ. – Clay

0

Очевидно Select класс используется в коде является py.pyxnat.core.select.Select, а не свой собственный Select класс. Проверьте импорт (и в частности, проверить на «звезде импорта» - from xxx import * - после того, как линии, где вы импортировать свой собственный Select класс

+0

Нет, я могу назвать другие методы. из 'Select'. Я просто не могу вызвать метод' __call__', который действует как функтор в python. Я не могу назвать его через matlab. Каждый другой метод, который я могу назвать из Matlab просто прекрасным. Надеюсь, это очистит все. – Justin

+0

но на самом деле это не соответствует сообщению об ошибке ... Теперь у меня почти нет опыта работы с Matlab, поэтому я могу только доверять вам, а затем решение: переименуйте свой класс 'Select' в то, что Matlab не путает с его собственными вещами. –

+0

Это ошибка в MATLAB. Должна быть проблема с вызовом специализированных методов, например, функторов. – Justin

Смежные вопросы