タグ "metaclass" を含むブログ一覧 投稿一覧へ戻る

【 Effective Python, 2nd Edition 】__set_name__ デスクリプタ専用特殊関数 ( special method for descriptor ) を利用してデスクリプタインスタンスを割り当てたクラス変数名を取得し、コードの冗長性を排除しよう!

Tags: descriptor , metaclass , __set_name__ , python , effective

Published 2020年7月28日21:30 by T.Tsuyoshi

メタクラス ( metaclass ) を利用することで、クラスの「型」が完全に作られる前にクラス属性を操作することができます。 さらに、デスクリプタ ( descriptor ) を利用すると、デスクリプタインスタンスを含むクラスとその属性のよりきめ細かい操作が可能になるんです。 例えば、顧客データベースの各フィールドに相当するクラスを作成するとします。 今回は、…

【 Effective Python, 2nd Edition 】サブクラス定義に付随させて必ず行いたい操作がある場合は、メタクラス ( metaclass )、または、__init_subclass__ 特殊関数を利用してド忘れを防止しよう!

Tags: metaclass , __init_subclass__ , python , effective

Published 2020年7月25日18:42 by T.Tsuyoshi

メタクラスの用途として、ある属性の有無や属性値の値によってクラスの機能を変化させる、サブクラス定義に必要な属性が含まれているか、属性値は有効かを検証する、等がありますが、型を記録しておき将来的に復元可能にする、という操作にも最適です。 例えば、Python オブジェクトの「型紙」をパラメータの値も含めて JSON 形式にシリアル化しておき、将来的な復元に備えて保存したいとします。 …

【 Effective Python, 2nd Edition 】今回も懲りずにメタクラス ( metaclass ) - __init_subclass__() 特殊関数でメタクラスをもっと活用しよう!

Tags: __new__ , metaclass , __init_subclass__ , python , effective

Published 2020年7月23日18:23 by T.Tsuyoshi

前回 は、メタクラスでどんなことができるのか、どんな動作をしているのか、ということを少しでも理解しようとモガいてみましたが、今回も懲りずに続きです。 今回はメタクラスの一般的な使い途の1つである「サブクラス定義の検証」を見ていきたいと思います。 「多角形 ( multisided polygon ) 」を象徴するクラスを考えます。 各サブクラスでは「何」角形であるの…

【Python 雑談・雑学】メタクラス ( metaclass ) とデコレータ ( decorator ) で遊んでみる、考えてみる!

Tags: miscellaneous , decorator , __new__ , metaclass , python

Published 2020年7月21日20:29 by T.Tsuyoshi

クラスはオブジェクトの設計図であり、メタクラス ( metaclass ) はクラスの設計図である、といわれたところで全然分かりません。 ただ、昨今のプログラミング環境においてブラックボックス的に機能を提供してくれる先進的なフレームワークやライブラリ、例えば Django における Forms など、が、このメタクラスによって実現されていることは確かなんです。 どんなものなの…