У меня есть класс в Python, у которого есть ресурсы (например, сокеты). Я хотел бы использовать класс в MATLAB. Для меня важно убедиться, что объект python продолжит удерживать свои ресурсы. Чтобы проверить, как MATLAB справится с этим, я создал следующий класс в Python:
class Klaus:
def __init__(self, id):
self.id = id
print "klaus::ctor::id={}".format(self.id)
def __del__(self):
print "klaus::dtor::id={}".format(self.id)
И вот мой код MATLAB:
klaus = py.klaus.Klaus(42);
for i = 1:5
disp("klaus says " + klaus.id);
end
delete(klaus);
Выходные данные MATLAB, кажется, находятся в очень непонятный порядок:
klaus::ctor::id=42.0
klaus::dtor::id=42.0
klaus says 42
klaus says 42
klaus says 42
klaus says 42
klaus says 42
klaus::dtor::id=42.0
Я исключил, что ctor будет первым, после «klaus говорит» и dtor будет в конце. Простой тест, написанный на python, дает исключенное поведение. Но я не понимаю, почему порядок отличается в MATLAB.
edit: мне не удалось скопировать