Overriding methods per object in Nim can happen, sometimes I've seen this sort
of handmade vtablish thing:
import sugar, strformat
type
Nimterface = object
m: proc(x:int):string{.nimcall.}
proc call(o: Nimterface,x:int):string = o.m(x)
let obj1 = Nimterface(m:(x:int)=> &"one:{x}")
let obj2 = Nimterface(m:(x:int)=> &"two:{2*x}")
echo obj1.call(5)
echo obj2.call(7)
RunThat's a bit prototype ish
