`init` feels like an unhelpful name in OO. It doesn't give you an initial value, it initialises the instance that has already been created. Developers are often surprised that init doesn't return the instance, because they have a strong association with `new Foo()`.
Perhaps `finish` would have been a less confusing name?
miniblog.
Related Posts
In Python I can choose any name for my instance variable when defining a method. In practice people almost always use `self`.
Go has the same flexibility, but using other names for the instance is totally normal!
Another nice feature of OO in Common Lisp: you initialise your class instance with the function initialize-instance.
So many languages define a 'construct' as a method that has access to the current instance, which is really kinda confusing (c.f. __init__ and __new__ in Python).
Common Lisp has a function change-class that lets you change the class of instance (like reassigning __class__ in Python). http://clhs.lisp.se/Body/f_chg_cl.htm
I love the note at the end: "semantic difficulties" if you call any methods whilst the class changes!