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!