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

【 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 ) 」を象徴するクラスを考えます。 各サブクラスでは「何」角形であるの…