Object Lua:为什么我的表没有从元表中找到方法?

Object Lua:为什么我的表没有从元表中找到方法?,object,inheritance,lua,Object,Inheritance,Lua,在我的示例中,我创建了一个类Person,并为成员“Name”设置了一个默认值。 我有一个构造函数和一个名为sayHi()的函数。每当我尝试调用该函数时,都会出现错误: lua: test.lua:22: attempt to call a nil value (method 'sayHi') stack traceback: test.lua:22: in main chunk [C]: in ? 据我所知,我正在创建一个新表,将表的元表(setmetatab

在我的示例中,我创建了一个类Person,并为成员“Name”设置了一个默认值。 我有一个构造函数和一个名为sayHi()的函数。每当我尝试调用该函数时,都会出现错误:

lua: test.lua:22: attempt to call a nil value (method 'sayHi')
stack traceback:
        test.lua:22: in main chunk
        [C]: in ?
据我所知,我正在创建一个新表,将表的元表(setmetatable)设置为Person类,然后返回该表,这意味着我应该能够使用它的sayHi()函数,但我得到的是一个nil值

Person = {}

Person.Name = "No name inputted"

function Person:new(name)
    local o = {}
    setmetatable(o,self)
    self._index = self
    return o
    
end

function Person:sayHi()
    print(self.Name .. " says hi")
end


firstPerson = Person:new("Michael")
secondPerson = Person:new("Julian")

print(firstPerson.Name)
secondPerson:sayHi()



元表上正确的属性名是
\uu index
(两个前导下划线)。您正在分配给
\u index
(一个前导下划线)。

元表上正确的属性名称是
\u index
(两个前导下划线)。您正在分配给
\u索引(一个前导下划线)