【Python】クラスの使い方(わかりやすくしました)

スポンサーリンク

Pythonのクラス(class)の使い方について。

この記事の内容はコチラです

  • Pythonのクラスの使い方
  • クラスの引数の使い方
  • インスタンスって何?
  • selfの使い方

クラスを使うことができれば、Pythonで様々なプログラムを書くことができ幅が広がります。オブジェクト指向言語でクラスは必須ですからね。

今回は、Pythonのクラスの超入門編としてクラス(class)のかんたんな使い方をわかりやすく解説します!

Pythonのクラス(class)の使い方

Pythonではクラス(class)の使い方を理解するのは基本中の基本です。

class・クラスの定義

class クラス名:
    #コンストラクタ
    def __init__(self, 引数1・・・):
        初期化処理

    #メソッド1
    def メソッド1(self, 引数1・・・):
        処理

    #メソッド2
    def メソッド2(self, 引数1・・・):
        処理
# クラスを使用する(インスタンス化)
クラス変数 = クラス名(引数)
クラス変数.メソッド(引数)

Pythonのクラスは「class クラス名」で定義します。

クラスは主に、「コンストラクタ」と「メソッド」で構成されます。

「コンストラクタ」と「メソッド」についてそれぞれ解説します。

クラスのコンストラクタ

class clsCul:
    def __init__(self, num):
        global ini_num
        ini_num = num

クラスの「コンストラクタ」は「初期化処理をするところ」です。クラスが呼び出されたときに最初に実行されるのがこの「コンストラクタ」です。「コンストラクタ」はクラスに1つだけです。

ということは、クラス実行時に最初にしたいことをここに記述すればいいんですね。

コンストラクタの名前

コンストラクタは「def __init__()」で定義します。「init」の前後はアンダーバー2つ「__」です。

このコンストラクタは呼び出し側から「クラス.__init__」とする必要はありません。クラスを呼び出すと、最初に自動的に実行されます。

コンストラクタのパラメータ(引数)

コンストラクタにパラメータ(引数)を設定できます。

第一引数は「self」とします。この「self」は「自身」という意味のとおり、クラスを呼び出したオブジェクトです。

第二引数以降は任意に設定できます。

クラスのメソッド

class clsCul:
    def cul_plus(self, num):
        global ini_num
        return ini_num + num

Pythonのクラスのメソッドはいわゆる関数のことです。「def メソッド名」で定義します。

ここでは「cul_plus」メソッドを定義しました。第一引数は既定「self」です。「self」はクラスを呼び出したオブジェクトです。

第二引数「num」の値をグローバル変数「ini_num」の値を足し算して、その結果を返します。

クラスを呼び出して使う(インスタンス化する)

それでは、上で定義したクラスを呼び出して使ってみましょう!クラスを使うことをインスタンス化といいます。

class clsCul:
    def __init__(self, num):
        global ini_num
        ini_num = num

    def cul_plus(self, num):
        global ini_num
        return ini_num + num
# clsCulクラスを使う(インスタンス化)
clsC = clsCul(10)
print(clsC.cul_plus(1))
#[結果] 11

「clsC = clsCul(10)」でクラス「clsCul」をインスタンス化しました。

クラスの引数に「10」をセットしました。これがクラスのコンストラクタ「__init__」の第二引数「num」に渡されます。これにより、クラス内のグローバル変数「ini_num」が「10」となりました。

そして「clsC.cul_plus(1)」として、クラスのメソッド「cul_plus」を実行しました。引数は「1」なので、メソッド内で「1+10=11」となり、「11」が返されました。

selfの正体

class clsTest:
    def __init__(self):
        pass

    def test(self):
        return self
clsT = clsTest()
print(clsT.test)
#[結果] <bound method clsTest.test of <__main__.clsTest object at 0x000002074023A278>>

「clsTest」のメソッド「test」で「self」を返すだけの単純なクラスです。

「self」の正体はクラスを呼び出したオブジェクトです。それを確かめるためのクラスです。

クラスのメソッド「test」を実行すると、長い文字列が返されました。「__main__.clsTest object」という記述があり、これがメソッドを呼び出したオブジェクトです。

メソッド「test」を呼び出したオブジェクトが「clsTest」だということがわかりましたね。

これで、クラスを定義し、クラスをインスタンス化して、メソッドを実行する一通りの流れを簡単にやってみました。

以上、Pythonのクラス(class)のかんたんな使い方でした。

コメント

  1. deckeye より:

    こちら、コンストラクタでglobal変数の宣言をしているのに、その後のメソッドでも同じglobal変数の宣言が必要なのでしょうか。