Common Lisp Object System
CLOSでのオブジェクトのクラスは動的であり、オブジェクトの内容だけでなく「構造」を実行時に変更できる。インスタンスが属するクラスを変更する関数は (change-class INSTANCE NEW-CLASS-NAME &rest INITARGS) である。
また、CLOS は実行時に(既にそのクラスがインスタンスを持っていても)クラス定義を変更できる。具体的には、defclassを再度評価してクラス定義を変更した際、CLOSは(make-instances-obsolete CLASS)を呼び出す。make-instances-obsoleteは指定されたクラスのすべてのインスタンスに対してupdate-instance-for-redefined-classを呼び出す。update-instance-for-redefined-classは新たに追加されたスロットや削除されたスロットの情報を引数として受けとり、同じく引数として受け取ったインスタンスから新しい定義に基づいて新たに作ったインスタンスへ値をコピーする。これら3つのメソッドは継承によりユーザーが書き換え・追加を行うことができる。