TAG クラス

クラスデコレータ

注意:関数デコレータを理解されていない方は、先にそちらを理解することをおすすめします。 型オブジェクト(クラスオブジェクト)の復習 型オブジェクト(クラスオブジェクト)で説明したとおり、Pythonではクラスもただのオブ…

ディスクリプタ

ディスクリプタとは __get__、__set__、__delete__のうちいずれかのメソッドが定義されたオブジェクトをディスクリプタと呼びます。 ディスクリプタをメンバにもつオブジェクトに対し、そのメンバにアクセスし…

プロパティ

属性へのアクセス これまで見てきたように、Pythonで属性にアクセスする際は [オブジェクト名.メンバ変数名] の形式で記述しました。 ですが、例えば「参照するときはカッコを付けたい」「更新するときはチェックをしたい」…

プライベートメンバ

慣習的な命名規則によるプライベートメンバ 以前のページで書いたとおり、Pythonにはアクセス修飾子がありません。 また、公式ドキュメントでも、「オブジェクトの中からしかアクセス出来ない “プライベート” インスタンス変…

インスタンスアロケータ

__new__()メソッド クラス定義に__new__()メソッドがあれば、インスタンス生成時に「インスタンスを生成するために」呼びだされます。 __new__()メソッドの第1引数は、clsを指定しますが、これはインス…

クラスの継承

継承 クラス定義と継承 既存クラスを継承したクラスを定義する場合は、class文に親クラスを指定します。 親クラスを指定しない場合、クラスはobjectクラスを継承したクラスとなります。 上のサンプルでは、継承によりSu…

クラスメソッドとスタティックメソッド

クラスメソッド クラスメソッドはメソッド内で「クラス自身」を参照することができるメソッドです。 メソッドの第1引数にはそのクラス自身をclsという名前で指定します。第2引数以降は通常の引数となります。 クラスメソッドを利…

型オブジェクト(クラスオブジェクト)

クラスはオブジェクト pythonでは関数はおろか、クラスでさえもただのオブジェクトの一種です。 どういうことでしょうか?クラスをオブジェクトとして扱ったサンプルを確認してみましょう。 このようにCoordinateとい…

オブジェクトの属性追加と空のクラス

外部からのメンバ追加 Pythonにはインスタンスの属性を外部から追加したり削除することができます。 上のコードでは、メンバ変数にxをもつSample型のオブジェクトを生成していますが、その後、属性yを追加したりもともと…

クラスの基本

前回、オブジェクトとクラスの関係について説明しました。このページではPythonのクラスの定義方法について説明します。 クラス定義とインスタンス化 クラス定義 まずはクラス定義の書き方から説明しましょう。class文を使…