如何从matlab中调用python类的“__call __()”方法

时间:2016-01-07 16:06:29

标签: python 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.

编辑:

select.('__call__')('blah')似乎无法正常工作

2 个答案:

答案 0 :(得分:1)

来自Matlab技术支持:

  

我的名字是sai,我正在写你的技术支持   案例#01708094关于'通过matlab调用python仿函数'。

     

我了解您在调用仿函数时遇到问题   在MATLAB中用python定义。

     

我看到你正在使用MATLAB R2014b。请注意这是一个   MATLAB R2014b中的已知问题已在MATLAB R2015a和MATLAB中修复   在R2014b中没有已知的解决此问题的工作。如果是   可行,我建议升级到MATLAB R2015a   帮助您解决此问题。

答案 1 :(得分:0)

显然,您在代码中使用的Select类是py.pyxnat.core.select.Select,而不是您自己的Select类。检查您的导入(并专门检查“星标导入” - from xxx import * - 在您导入自己的Select课程的行之后。