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では無理。
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()とするのがいいかも。