LoginSignup
1
1

Pythonのクラス

Last updated at Posted at 2023-12-30

Pythonのクラスについて学習

Javaとの同じ点や異なる点を整理しながら、Pythonのクラスについて学習する。

クラス定義

class クラス名:

Javaとは異なり、publicとかの修飾子がクラスにはない。

属性

class クラス名:
    属性名 = 

Javaではインスタンス変数(非static変数)定義だが、Pythonではクラス変数(static変数)定義になる。

メソッド

以下の3種類ある。

  • インスタンスメソッド
    インスタンス化されて実行できるメソッド
  • クラスメソッド
    @classmethodデコレーターをメソッドに使う。Javaのstaticで定義したメソッドと同じ。
    インスタンス化しなくても使えるという点は静的メソッドと同じ。
    コンストラクタメソッドと同じようにインスタンス化したクラスを返却してくれるので、datetime.now()のような呼び出し側のコーディングで、目的や状態を分かりやすくするメリットがある。
  • 静的メソッド
    @staticmethodデコレーターをメソッドに使うことで定義できる。インスタンス化せずに使うことができるものなので、Javaのstaticで定義したメソッドと同じ。
    finalとかはないのだろうか。

特殊メソッド

アンダースコアを二つつけたメソッドで、__init____add__などの様々な種類がある.
__init__はJavaのコンストラクタと同じ役割のメソッド。
__add__のような演算子に関する特殊メソッドは、演算子による演算機能を追加することができる。

公式ドキュメント:https://docs.python.org/ja/3/reference/datamodel.html#special-method-names

プロパティ化

@propertyデコレーターを追加することで、カッコをつけずにインスタンスメソッドを呼び出すことができるようになる。
可読性を向上させることができるようになる。プロパティ化という名前の通り、getterやsetterのような使い方をしたい場合に使うのが良さそう。

1
1
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1