Python 文法・関数

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

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

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

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


本ブログを運営しているTech Teacherは、業界初のプログラミング家庭教師サービスを提供しています。

その特徴は完全マンツーマン・フルオーダーメイド指導・30分ごとの利用が可能であるところです。

完全マンツーマン

一般的なプログラミングスクールの録画講義や対面講義では内容をうまく理解できないまま先に内容が進んでしまうことがあります。Tech Teacherのマンツーマン指導なら理解できない箇所は何度も分かるまで説明を受けることができます。

フルオーダーメイド指導

Tech Teacherではあらかじめ決められたカリキュラムはありません。そのためご自身の学習状況や学びたいことに合わせた指導が可能です。

一括支払いなし

一般的なプログラミングスクールの料金体制はカリキュラムに対して一括払いですが、Tech Teacherでは利用した分だけの支払いとなります。そのため、大きな費用負担がなく気軽に始めることができます。

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 = : 継承先のインスタンス変数

「Tech Teacherで!~家庭教師ならではの3つの魅力~」

本Blogを運営するプログラミング家庭教師Tech Teacherは以下のような疑問をすべて解決できるサービスです。

・Pythonの応用をもっと学びたいが、値段が高いスクールに通うのは気が引ける

・目的別に短時間の利用ができるサービスがあったらいいな

比較対象 Tech Teacher プログラミングスクールA社
受講形態
生徒1人に教師1人
(対面またはオンライン)

生徒3~5人に教師1人
(少人数個別指導)
担当教師
自分で選んだ担任教師
×
講座で決められた教師
カリキュラム
生徒様に最適化された
オーダーメイド指導

全員同じ教材・カリキュラム
仕事・学業との両立
可能
×
不可能
メンター制度
担任教師が一貫して
質問・学習状況を管理

質問対応・学習管理の担当が異なる
料金
授業時間分だけ
(3,960円 / 30分~)
×
一括払い
(528,000円 / 3ヶ月)
初期費用
入会金
(22,000円)
×
料金一括払い
(528,000円)
シミュレーション
(3ヶ月90分の指導を週1で行う)

(164,500円)
×
(528,000円)

以下、Tech Teacherの3つの魅力を紹介します。

Pythonをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

1.効率的な学習スタイル

一人のためだけの指導~1対1の完全個別指導~

一般的なプログラミングスクールでは大人数の対面講義や、録画講義の視聴またはオンラインでの受講がメインです。そうなると学習しながら生じた疑問をすぐに聞くことができずに、先に進んでしまい内容をうまく理解できなかったり、作業がうまく進まなかったりします。

家庭教師であれば、マンツーマンのため自分の課題にだけ焦点を当てて指導を受けられるので、1回の授業を濃い時間にすることができます。

無駄のない学習~フルオーダーメイド~

Tech Teacherは一般的なプログラミングスクールと異なり、あらかじめ決められたコースやカリキュラム設定がありません。

一般的なプログラミングスクールのカリキュラムでは、自分が本当に学習したいことを学ぶのにいくつか他の講義を受けなければなりません

Tech Teacherでは生徒様の現状の習熟度・目的・期間に応じてお悩みにダイレクトに刺さる授業を展開し、最短で目標となるゴールを目指せます。

2.自分のペースに合わせて学習できる

必要な分だけ~従量課金モデル~

Tech Teacherでは、他にはない「短時間(30分ごと)」の利用が可能です!勉強していてちょっとわからないところ、プログラミング学習のモチベーション維持など様々な疑問や悩みを解決することができます。

授業を受けた分だけ後払いする料金体系(3,960円〜 / 30分)のため、必要な期間に必要な分だけ受講できます。

好きな時間で~相性のいい教師の紹介~

Tech Teacherではあらゆるニーズに対応できる教師陣がいるため、生徒様の希望条件に最適な教師を紹介します。

Tech Teacherを受講している方のほとんどが仕事をしている社会人の方です。TechTeacherの家庭教師なら受講日時や回数を、生徒様のご都合に合わせて柔軟に調整することができ、スキルだけでなく都合の良い時間で指導できる教師を選べます。

3.確実に身につく

挫折しない~担任教師の継続指導~

オンライン・オンデマンドの講義の視聴形態だと、学習に対するモチベーションの維持が課題となり、当初の予定よりも受講期間が伸びたり、挫折したりする恐れがあります。

Tech Teacherでは、担任教師が生徒と二人三脚で学習をするため、学習が大変なときも寄り添ったサポートを受けられます。

具体的には学習計画の管理や受講目的を明確にした上で中間目標を設定し、それに向けた学習の指導をすることでモチベーションの維持を図ります。

いつでも質問できる~チャットサポート(オプション)~

担当教師は授業の時間以外に、チャットサービスを利用して、自分で学習しているときに生じた疑問をすぐに質問して解決することができます。

Pythonをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

Tech Teacherへのお問い合わせ



質問のみのお問い合わせも受け付けております。

まとめ

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

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

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