Python

【Python】classの使い方を理解しよう!役割や実践方法を徹底解説!

「クラスって何だろう」
「クラスっていつ使うの」

そう思った方はいませんか?Pythonを学習すると何度も出会うのがクラスです。
今回は、Pythonのクラスの使い方から実践的な使用方法
までの基本を解説します。

初学者の方は、本日の内容が難しいと感じるかもしれませんが、心配しないでください。
経験者でも何度もコードを書き、時間をかけて理解できるのが本日の内容です。
今回はコードを自分で試して、挙動を確認するようにしてください。

Pythonのクラスとは

「クラス」はよく「設計図」に例えられます。分かりずらい人は料理のレシピと考えると良いでしょう。何度も同じ味の料理を作るには、食材の種類や量、調味料の調合が決められていると便利です。同様に決まったデータ処理をするなら、その処理方法が必要なのです。この決まった処理方法のことを「クラス」と呼ぶのです。

classの役割

クラスを理解する上で、欠かせないのが、「オブジェクト」、「クラス」、「インスタンス」の3つ言葉で、それぞれに関連があります。
易しく理解するために、「クラス」、「インスタンス」、「オブジェクト」の順に見ましょう。

クラス

クラスは、データを処理するレシピです。私たちは、まずこのレシピを作るのです。レシピに食材の分量、調理法が書かれているように、クラスにはデータ処理の方法を定義します。ここが間違えば、間違った結果が生まれます。

インスタンス

クラスというレシピから実際に作った料理を「インスタンス」と呼びます。インスタンスとは、クラスを実体化させたものです。

オブジェクト

オブジェクトとは、クラスとインスタンスの2つを、まとめた考え方と考えてください。Pythonでのオブジェクトは「データを抽象的に表したもの」と表現されています。

classの基本的な使い方

では、実際のコードを参照しながらクラスの基本的な使い方を見ていきましょう。

クラスの宣言

最初に、クラスを「宣言」します。
次は、
最もシンプルな宣言です

 class SampleClass ( ) :

上記のサンプルコードは、「SampleClass」という名前何の処理もない空のクラスです。

クラスを利用する(インスタンス化する)

Pythonのクラスを利用するには、クラスの中にインスタンスを生成します。
次のサンプルコードは、SampleClassのインスタンスを生成し、クラスのsay()メソッドを呼び出す例です。

 class SampleClass ( ) :
 def say ( self ) :
 print ( ” Hello World ! ” )classInstance = SampleClass ( )

 classInstance . say ( ) # – > ” Hello World ! “

上記のように、クラスのメソッドを呼び出す場合は、クラスをインスタンス化したものを格納した変数から、クラスのメソッドを呼び出します。

Pythonのクラスの実践方法・具体例

ここからは、より実践的にPythonのクラスの使用方法について解説します。

メソッドを定義する

まずは基本として、クラスの中でメソッドを作る方法を解説します。

メソッドとは、一定の結果を生み出す処理です。例えば、「野菜を切る」、「炒める」、「調味料の調合」などの各工程の処理を決めるイメージです。この工程が決まれば、クラスを使うことで画一的処理ができます。

このような小規模な処理の塊をメソッドと呼ぶのです。これには名前がついており、クラスを利用するときには、メソッド名を使うことで、メソッド内処理をまとめて実行できます。Pythonのメソッドは、”def”キーワードの後に任意のメソッド名を指定します。

 class MyClass ( ) :
 def sample _ method ( self ) :
 # ここにメソッド内の処理を記述する
 ・・・

Pythonでは、クラスにメソッドを定義する場合、必ずメソッドの第一引数にクラスのインスタンスを表すオブジェクトを受け取る必要があります。

また、第一引数の名前は「self」するのが慣習です。引数は、「いんすう」ではなく、「ひきすう」と呼びます。

引数があるメソッド

次に引数を受け取るメソッドを定義してみましょう。引数はメソッドの第二引数以降に引数名を記述します。複数の引数を受け取る場合は、カンマ区切りで引数を宣言します。

 class MyClass ( ) :
 def sample _ method ( self , arg1 , arg2 ) :
 # ここにメソッド内の処理を記述する
 ・・・

戻り値を返すメソッド

戻り値とは、処理の結果を示す処理です。Pythonでは、メソッドに戻り値に関する宣言は必要なく、処理の中で戻り値をreutrnで返すと、戻り値があるメソッドとして扱われます。

 class MyClass ( ) :
 def sample _ method ( self , arg1 , arg2 ) :
 # ここにメソッド内の処理を記述する
 ・・・

Pythonの引数や戻り値については下の記事で詳しく解説しています。ぜひご覧ください!

【初心者向け】Pythonの関数について解説!引数や戻り値の使い方とは? 「Pythonの関数ってどうやって使えば良いの?」 「そもそも関数を使うメリットは何?」 本記事ではこのような疑問を...
戻り値をマスターしよう!Pythonのreturn文の使い方を簡単解説Pythonを学習し始めたばかりの方で、returnについて疑問を抱いている方も少なからずいるでしょう。 「基本的なretur...

インスタンス変数

インスタンス変数とは、そのインスタンスだけで使う変数です。クラスのインスタンスが異なれば、それぞれ別の値が格納されます。

次のサンプルコードは、ユーザー名と年齢を格納するインスタンス変数を、クラスに宣言する例です。また複数のインスタンスを生成し、インスタンスごとに別々の値が保持できることも確認しています。

 class MyClass :
   user _ name = None   # インスタンス変数の宣言
   age = None         # インスタンス変数の宣言

   def say ( self ) :
    print ( “名前:{ 0 }、年齢:{ 1 }” . format ( self . user _ name , self.age ) )

 # 1つめのインスタンス

 user1 = MyClass ( )
 user1 . user _ name = ” 山田 “
 user1.age = 20

 # 2つめのインスタンス

 user2 = MyClass ( )
 user2.user _ name = ” 鈴木 ”
 user2 . age = 40

 user1 . say ( ) 

 user2 . say ( )

■ 上記コードの実行結果

 名前:山田 、年齢 : 20
 名前:鈴木 、年齢 : 40

コードの実行結果を見ても分かる通り、インスタンス変数にはインスタンスごとに別々の値を保存できます。

コンストラクタ

クラスのメソッドを学習すると、皆さんは、「コンストラクタ」という言葉に出会うと思います。これは、クラスの初期設定などを行うためのメソッドのことです。コンストラクタは、クラスのインスタンスを生成した時に自動的に呼び出されます。コンストラクタは「init」という名前でメソッドを定義します。

ではコンストラクタの宣言方法について解説します。

 class MyClass :
    fruits = [ ]
    def __ init __ ( self ) :
      print ( “コンストラクタが呼び出されました!” )
      # 初期化
      self . fruits . append ( “パイナップル” )
      self . fruits . append ( “メロン” )
      self . fruits . append ( “イチゴ” )

  instance = MyClass ( )
  print ( instance.fruits )

■ 上記コードの実行結果

 コンストラクタが呼び出されました!
  [ ‘ パイナップル ‘ ,  ‘ メロン ‘ ,  ‘ イチゴ ‘ ]

コードを実行すると、次の内容がコンソールに出力されます。クラスのインスタンスを生成する事で、MyClassのコンストラクタが呼び出されています。「__init__メソッド」がこれを意味します。

デストラクタ

デストラクタはコンストラクタの逆で、クラスのインスタンスを削除するときに使うメソッドです。コンストラクタは「del」という名前でメソッドを定義します。

 class MyClass :
    fruits = [ ]
    def __ del __ ( self ) :
      print ( “デストラクタが呼び出されました!” )

クラスを継承する

「継承」とは、元となるクラスのインスタンス変数や、メソッドを別の機能でも使えるようにすることです。継承したクラスに新しいメソッドを追加したり、元となったクラスのメソッドを拡張したりもできます。

また、継承を使うことで同じような機能のクラスを作る時に、わざわざ同じような処理を作らなくてよいため、効率的に開発できます。

では、クラスを継承する例を見てみましょう。

 # 継承元のクラス
 class Base :
  base _ val = ” 継承元のインスタンス変数 “

  def base _ function ( self ) :

    print ( “base_function = ” + self . base _ val )

 # Baseを継承したSubクラス

 class Sub ( Parent ) :
   sub _ val = ” 継承先のインスタンス変数 “

    def sub _ function ( self ) :

        print ( “sub_function= : ” + self . base _ val )

        print ( “sub_function= : ” + self . sub _ val )

 sub = Sub ( )

 sub.base _ function ( )
 sub.sub _ function ( )

クラスを継承する時のポイントは、継承先のクラスを宣言する時に「class Sub(Parent):」のように括弧内に継承元のクラスを指定することです。また、サンプルコードでは、継承先のクラスで新たに「sub_function」定義しており、その中で継承元のクラスのインスタンス変数を参照しています。上のサンプルコードを実行すると次のような結果になります。

▪️ 実行結果

 base _ function = 継承元のインスタンス変数
 sub _ function = : 継承元のインスタンス変数
 sub _ function = : 継承先のインスタンス変数

Pythonの個別指導なら『Tech Teacher』

引用元:Tech Teacher

このBlogを運営するTech Teacherは、Pythonを学習する社会人を対象に、初心者から挫折した人まで、一人ひとりの目的や学習状況にあわせた個別指導を行っています。

また、オンライン指導も選べるので、自宅でも対面でも受講できます。

一人ひとりに最適化された完全マンツーマン指導を提供

完全マンツーマン指導で着実に身につく!

Tech Teacherでは専任の教師が完全マンツーマン指導を行います。
学習状況や目標をしっかり把握した教師が、生徒様のご要望もふまえながら最適なオーダーメイドの指導をご提供します。

お仕事と両立しながら続けられる!

Tech Teacherなら、受講日時や回数を生徒様のご都合に合わせて柔軟に調整することができます。
そのため、お仕事との両立がしやすく、プログラミング学習を継続的に学習することができます。忙しい合間にプログラミングを学びたいという方におすすめです。

授業料は受けた分だけ!

Tech Teacherでは、生徒様が受けた授業の時間分だけ後払いで請求させていただきます。そのため、気軽にプログラミングの学習を始めることができます

以下のボタンからさらに詳しい情報をご覧いただけます。

まとめ

今回は、Pythonでクラスを宣言する方法と、具体的なクラスの使い方について解説してきました。Pythonの機能作成で、このクラスの概念は重要で、避けては通れません。

ただ、「正直難しい」と感じた方もいるのではないでしょうか?その感覚は誰もが同じです。実際に機能を作る経験を繰り返すことでしか、深い納得は得られません。

一つ一つの基本的なコードの挙動をある程度理解すれば、先に学習を進めることをおすすめします。その後で学ぶ知識と合わさって、今回のクラスの使い方や継承について学習の理解が進みます!