J'utilise simplement la fonction getmetatable
if getmetatable(thing) == Class then
Mais si vous utilisez un certain type de inheritence alors vous pouvez essayer celui-ci
local A = {} A.__index = A
function A:new() return setmetatable({}, A) end
function A:foo() print('foo') end
local B = setmetatable({}, A) B.__index = B
function B:new() return setmetatable({}, B) end
function B:boo() print("boo") end
local function is_instance(o, class)
while o do
o = getmetatable(o)
if class == o then return true end
end
return false
end
local a = A:new()
local b = B:new()
a:foo()
b:foo()
b:boo()
print(is_instance(a, A))
print(is_instance(a, B))
print(is_instance(b, B))
print(is_instance(b, A))
'debug.getmetatable' peut être utilisé dans ce cas. – moteus