Should I use "self" or not

I was rewriting my module and I was questioning should I use self or not

function KeyHandler.Create()
	local Keytable = {}
	
	local KeysActive = {}
	
	local Keys = {}
	
	function Keytable.Init(values : KeyValues)
		for i, keyindex in ipairs(values.Keys) do
			local keys = string.split(keyindex, ",")
			KeysActive[i] = false
			
			for i, key in ipairs(keys) do
				local Key = {}
				Key.Priority = values.Priority or KeyHandler.Priority
				Key.Index = i
				Key.Enabled = true

				function Key.Fire()
					Key.MaxHoldTime = values.MaxHoldTime
					--local ComboHoldTime = {}

					--local TimeConnections = {}
				end
				table.insert(Keys, Key)
			end
		end
	end
	
	function Keytable.Call()
		
	end
	
	function Keytable.Active(value : boolean)
		for i, Key in ipairs(Keys) do
			Key.Enabled = value
		end
	end

	function Keytable.Destroy()
		Keytable = nil
	end
	
	return Keytable
end

For example code here:

local Key = {}
Key.Priority = values.Priority or KeyHandler.Priority
Key.Index = i
Key.Enabled = true

function Key.Fire()
	Key.MaxHoldTime = values.MaxHoldTime
	--local ComboHoldTime = {}
	
	--local TimeConnections = {}
end
table.insert(Keys, Key)
Key.MaxHoldTime = values.MaxHoldTime

or

self.MaxHoldTime = values.MaxHoldTime

This is what bothers me. I want explanation.
Also, should I change code structure?

Btw, " : " looks better than " . " but I want code to be as fast as possible.

Use self is the best for module scripts.

THIS IS BECAUSE I THINK SELF IS ACTUALLY …

You should be using self for all object oriented programming, it’s the point of it. The self keyword is one of the most time saving and efficient ways to refer to an instance of a class. It’s the way Lua implements object oriented programming in the first place.