Is it allowed to avoid classes? : <p>Programming with the object-oriented paradigm is some kind of best-practice method in developing large programs. That is the opinion of the Java-community, the C++ community and also from the Python community. In all these languages, it's possible to use the “class” statement for creating a subspace in which local variables and local methods are declared. But what, if this concept is wrong?</p>

<p>Plain C programmers never used classes, instead they are grouping their sourcecode in files. File1 is class1, file2 is class2 and so on. On top of each file a struct is used to manage the variables. According to c programmers this concept works great. But Forth programmers are also not convinced that object oriented programming is a good idea. In the new Forth200x standard no word for class is available, instead the Forth community groups the sourcecode also in files, better known as screens. It seems, that class-less object oriented programming is possible. Let us construct a simple example in Python.</p>

<p><a href="https://i.stack.imgur.com/i2inw.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/i2inw.png" alt="classlessgui"></a></p>

<pre><code>### main.py ###
import physics, gui

def main():
  gui.widgetinput.bind("&lt;Return&gt;", parseinput)
  gui.tkwindow.mainloop() 
def parseinput(event):
  name=gui.widgetinput.get()
  if name=="move":
    physics.move(20,0)
  print physics.player

main()

### physics.py ###
player=(100,100)

def move(x,y):
  global player
  player=(player[0]+x,player[1]+y)

### gui.py ###
import Tkinter

tkwindow = Tkinter.Tk()
tkwindow.geometry("650x400")
# info
widgetinfo = Tkinter.Label(tkwindow, text="input")
widgetinfo.place(x=100, y=100)
# input
widgetinput = Tkinter.Entry(tkwindow)
widgetinput.place(x=140, y=100)
</code></pre>

<p>The surprising thing is, that this program will get started with the python interpreter without any error messages. If the user enters the command “move” into the textfield, a request is send to the physics module and the position is updated. In an object-oriented programming style each module would be equal to a class, but in the sourcecode no explicit classes are used.</p>

<p>What is the name for a class-less programming style? Is it from a software engineering side allowed to do so?</p>
