0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

クラスメソッドとクラス変数

Posted at

Pythonのオブジェクト指向プログラミング第二弾としてクラスメソッドクラス変数についてまとめていきます

クラスメソッドとは

クラスメソッドとは、インスタンスを生成せずに呼び出すことのできるメソッドのこと

たとえば、三角形を表すTriangleクラスにクラスメソッドとしてareaを定義してみようと思います

class Triangle:
    @classmethod
    def area(cls, base, height):
        return (base * height) / 2
    
if __name__ == '__main__':
    print(Triangle.area(5, 10)) # 結果:25

クラスメソッドを定義する際に次の2点を行いましょう

  1. デコレーターである @classmethod を付与する
  2. クラスメソッドの第一引数には 「cls」を渡す

第一引数である「cls」は、クラスそのものを表しているイメージです
今回では、clsがTriangleクラスを表している感じです

したがって、最終行のように、クラス名. の形式でインスタンスを生成しなくても直接呼び出すことができます

クラス変数とは

クラス変数とは、クラスから直接アクセスすることのできる変数のこと

先ほど使用した、Triangleクラスに対して、2という定数を表すクラス変数 CONST を追加します

class Triangle:
    CONST = 2
    
    @classmethod
    def area(cls, base, height):
        return (base * height) / cls.CONST
    
if __name__ == '__main__':
    print(Triangle.CONST) # 結果:2
    print(Triangle.area(5, 10)) # 結果:25

クラス変数を使用する際は、「変数名 = 値」の形式で書くだけです

クラス変数はインスタンスう変数とは異なり、「self.」のような修飾を持たないため、クラスメソッドやクラスの外部からでもアクセスすることができます

クラス変数を使用する際の注意点としては、原則として定数のみに使用します。なぜなら、クラス変数を変更してしまうと、コード全体に影響してしまうからです。

0
1
0

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?