Call Python class from MATLAB

51 visualizaciones (últimos 30 días)
Mathieu
Mathieu el 1 de Mzo. de 2018
Comentada: nanren888 el 18 de Abr. de 2022
Hello,
Is it possible to call a Python class from MATLAB ? I found how to call Python functions in a .py file but not really how to deal with class.
For example, how to get/set the attribute of the following class and use its method from MATLAB:
class MyClass:
"""A simple example class"""
i = 12345
def f(self):
return 'hello world'
Thank you in advance for any advice/help.
  1 comentario
Hisham Assi
Hisham Assi el 12 de Mzo. de 2021
Hi Mathieu,
I have the same questiion; did you figure it out?
Thanks,
Hisham.

Iniciar sesión para comentar.

Respuestas (1)

Hans-Joachim Steinort
Hans-Joachim Steinort el 30 de Ag. de 2021
Editada: Hans-Joachim Steinort el 30 de Ag. de 2021
This answer might be plentifully late, but I currently stumble across the same topic, so for anybody who needs this in the future:
I copied your example class to a python-file named Test_Py.py in my current folder.
Then you first create a matlab object like so:
pyClass = py.Test_Py.MyClass
Th function call then is pretty straight forward:
s = pyClass.f;
S is now an object Python str with no properties as displayed if you simply use the disp(s) command
>> disp(s)
Python str with no properties.
hello world
Matlab provides an internal conversion between python data types and Matlab datatypes (see Documentation). This creates the desired output:
>> disp(string(s))
hello world
  2 comentarios
nanren888
nanren888 el 18 de Abr. de 2022
Editada: nanren888 el 18 de Abr. de 2022
Unable to resolve the name py.Test_Py.MyClass.
The function examples from the "Call User-Defined Python Module" work fine.
As soon as there's a class in the file, I get nothing but "Unable to resolve".
Has there been a change?
There's something really obvious missing?
nanren888
nanren888 el 18 de Abr. de 2022
Resolved, probably.
Found
py.importlib.import_module('Test_Py') - to actually produce a useful error.
And seems caught by the old copy-paste from website example produces inconsistent indentation problem.
I so like languages with syntax relying on invisibles. :)

Iniciar sesión para comentar.

Categorías

Más información sobre Python Package Integration en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by