Object Oriented programming in lua in a functional fashion
Even though this kind of inheritance is perfectly valid example of OOP designing in language like Lua; it is considered a bad practice of programming.
According to Programming in Lua on Object-Oriented Programming.

This kind of function is almost what we call a method. However, the use of the global name Account inside the function is a bad programming practice.

This function will work only for this particular object.
Even for this particular object the function will work only as long as the object is stored in that particular global variable; if we change the name of this object, withdraw does not work any more.


The example they've used to depict is also quite to the point and small.
You should also take a look at how they've explained creation of classes; their inheritance; public, private and protected datatypes/variables and many other OOP concepts using metamethods and tables depending on their usage.
Here's the index of OOP concepts incorporated in Lua.
Useful Links

Object Orientation Tutorial
Inheritance Tutorial
Metamethods Tutorial