Point = {} Point_mt = { __index=Point } function Point.new(x, y) tmp = {} tmp.x = x tmp.y = y return setmetatable (tmp, Point_mt) end function Point:set(x, y) self.x = x self.y = y end function Point:get() return self.x, self.y end function test() o = Point.new(0, 0) a = Point.new(10, 10) --いくつも作れる o:set(-10, -10) --oからもPointの関数setが呼び出せる。 --この場合変更されるのはo.xとo.y end