如何覆盖luabind类 __ finalize 方法?
尝试以这种方式执行此操作:
class A
function A:__init()
end
function A:__finalize()
end
local original_finalize_function = A.__finalize
A.__finalize = function(...)
-- some custom logic
if original_finalize_function then
original_finalize_function(unpack(arg))
end
end
local a = A
a = nil
collectgarbage('collect')
但是lua仍然只调用原始终结器。它确实适用于__init方法:
local original_init_function = A.__init
A.__init = function(...)
if original_init_function then
original_init_function(unpack(arg))
end
end
此外,我试图覆盖getmetatable(A).__ finilize。也没有帮助。
如何覆盖它?提前谢谢。
答案 0 :(得分:1)
只是一个猜测,但最终确定只是转到__gc
?
否则尝试迭代metatable以尝试找出luabind在做什么:for k , v in getmetatable(myobject) do print(k,v) end