Per quanto riguarda la programmazione ad oggetti in ogni caso una chiamata del tipo
codice:
obj.fun(a1, a2...an)
può essere resa in un linguaggio non ad oggetti come
codice:
fun(obj, a1, a2...an)
assumendo che obj sia passato per riferimento e non per valore. Quindi puoi utilizzare gli stessi meccanismi della programmazione ad oggetti in un linguaggio procedurale.
Dopotutto anche Python fa così