getmetatable
Example
Use a table's metatable and alter it.
print(getmetatable(Pupil).__index.GetName(Pupil))
-- getmetatable(Pupil) will return Pupil_meta.
-- Same as print(Pupil:GetName())
-- This is what the Lua interpreter basically does. (When __index is a table.)
getmetatable(Pupil).SetName = function(self, newName)
self.name = newName
end
-- We're adding a new method to Pupil's metatable
print(getmetatable(Pupil).GetName(Pupil))
-- Still the same, because Pupil_meta.__index is Pupil_meta.
Output: "John Doe"