総称してメタプログラミングと呼びます。うまく使えば強い武器になる。いずれも必須の知識(だと筆者は考える)。あれば必ず使われているテクニック。今回の説明に使う言語はPythonです(筆者の知識の問題もあります)。事情があるので今回は取り扱いません。その言語内実装に対する理解度はあった方が良いかもしれません。呼び出しが行われた時に呼び出される。name引数には呼ばれたときの名前が入る。メソッド呼び出しを行う。プロキシを実装している。極基礎的な知識なので覚えよう。オープンクラスなどとも呼ばれ、実行時にクラスの実装を拡張するような機能。ダックタイピングと組み合わせて使う強力な技。Pythonでは利用しにくくなっている。他にも、テスト系のライブラリではよく利用される。Pythonではインスタンスへの動的なメソッド追加は出来ない。Rubyに同様の機能が存在するかどうかは知らない。オブジェクトの属性アクセス時の振る舞いをカスタマイズ出来るようになる機能。classmethodなどの機能はこれで実現出来る。時間がないので詳しい説明は割愛。Pythonでは、type組み込み関数を使うことでクラスを動的に定義出来る。class構文は、内部的には上記のtypeを呼び出しているのと同じだと言える。別の関数で置き換えることが出来る。この機能がメタクラスである。