Matlabのメソッドの呼び出し

Matlabでは必ずしもinstance.methodの形式でメソッドを呼び出さなくてもいいようである。

classdef testclass2 < handle
    
    properties (SetAccess = private)
        counter 
    end
    
    methods
        function CT = testclass2(initial_num)
           CT.counter = initial_num;
        end
        
        function count(CT, add)
           CT.counter = CT.counter + add;
        end
    
        function ret = get_counter(CT)
            ret = CT.counter;
        end
        
        function display_counter(CT)
            fprintf('Counter: %d\n', get_counter(CT));
            % メソッドの中でも他のメソッドを直接使える
        end
    end
end

という定義を行った後、

>> count(ct, 5)
>> display_counter(ct)
Counter: 15
>> 

が正常に動く模様。

ちなみに、Pythonでは無理。
#!/usr/bin/env python

class klass:
    def method1(self):
        return 100.0  
    
    def method2(self):
        print method1(self)
    
if __name__ == "__main__":   
    inst = klass()
    print inst.method1()

とやっても、

print inst.method2()

でも、

print method1(inst)

でもエラーが出る。同じようなことをしたければ、class定義の外にmethod1(inst)という関数を定義し、その中でinst.method1()とするのがいいかも。