YAQ about reloading python modules in Matlab after python changes

I understand that there have been a number of questions regarding issues with Matlab not reloading python modules after they have been changed. Based off other answers, I have an acceptable solution, but I think I am hitting a bug.
My python:
class myTestClass:
def __init__(self, somestr):
self.loc = 1234
print("Init called")
def __del__(self):
print("Destructor")
def myTestFunc(self):
a = 456
print(f'My Test Func called loc={self.loc} a={a}')
My Matlab:
%clear classes
myMatlabTestClass = py.importlib.import_module('myMatlabTestClass');
py.importlib.reload(myMatlabTestClass);
pyclass = myMatlabTestClass.myTestClass("hello");
pyclass.myTestFunc()
The problem:
The above is sensitive to python code changes if I change the value of self.loc, but changing the value of a in myTestFunc requires the inclusion of clear classes.
I fear that clear classes will be too expensive and may impact other code, depending on where it is called.
I'd like to understand why a and self.loc would be treated differently here and if there is a workaround.

1 件のコメント

Alexander
Alexander 2023 年 7 月 27 日
Not quite what I wanted, but this code works flawlessly:
myMatlabTestClass = py.importlib.import_module('myMatlabTestClass');
py.importlib.reload(myMatlabTestClass);
pyrun("import myMatlabTestClass")
pyrun("myClass = myMatlabTestClass.myTestClass('somestr')")
pyrun("myClass.myTestFunc()")

サインインしてコメントする。

回答 (1 件)

SHAQLAIN
SHAQLAIN 2023 年 12 月 24 日
class myTestClass:
def __init__(self, somestr):
self.loc = 1234
print("Init called")
def __del__(self):
print("Destructor")
def myTestFunc(self):
a = 456
print(f'My Test Func called loc={self.loc} a={a}')

2 件のコメント

Walter Roberson
Walter Roberson 2023 年 12 月 24 日
Could you point out the difference between this and what was originally posted?
Alexander
Alexander 2024 年 1 月 1 日
The problem is not the python code, it is in matlab reloading the python code when changes are made to it.

サインインしてコメントする。

カテゴリ

製品

リリース

R2023a

タグ

質問済み:

2023 年 7 月 27 日

コメント済み:

2024 年 1 月 1 日

Community Treasure Hunt

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

Start Hunting!

Translated by