プログラミングにおいて、システム構成の考え方の1つに 「オブジェクト指向」 というものが存在します。オブジェクト指向プログラミングを用いることで、プログラムの規模が大きくなっても一貫性のあるコードが書きやすくなり、チームでの開発や保守が容易になるというメリットがあります。
この概念に基づいた機能を持っている言語は様々ありますが、Pythonもその中の1つに含まれます。
今回は、オブジェクト指向を扱ううえでの基本かつ重要な要素である「クラス」について、Pythonでの扱い方を詳しく解説していきたいと思います!
Pythonのclassとは
Pythonのclassとは、特定のデータや処理をひとつにまとめるための機能のことを指します。
オブジェクト指向に基づいてプログラミングを行う上で、クラスは根本的な役割を担っています。
オブジェクト指向とは、ある役割に関わるデータや処理を1つの 「オブジェクト」 としてまとめ、オブジェクト同士の組み合わせによってシステム全体を作り上げる考え方のことを言います。
クラスとは、この役割ごとに分割されたオブジェクトのことを指します。
オブジェクト指向については以下の記事でも詳しく解説していますので、こちらもぜひご覧ください。
Pythonのclassの使い方
通常の変数とは異なり、クラスは複数の要素から構成されています。
それぞれの要素や使い方について、順に説明していきます。
classの基本構文
まずは、クラスを使用する際の基本的な構文について見てみましょう。
クラスは一般的に、以下のような構造をしていることが多いです。
【サンプルコード】
class Student: #クラス名
def __init__(self, name, age): # コンストラクタ
self.name = name # インスタンス変数
self.age = age # インスタンス変数
def get_age(self): # インスタンスメソッド
return self.age
def profile(self): # インスタンスメソッド
print(f"名前:{self.name}")
print(f"年齢:{self.get_age()}")
クラスは主に、コンストラクタ・変数・メソッドの3つで構成されます。
定義済みのクラスは、以下のようにインスタンスを生成して活用することができます。
【サンプルコード】
taro = Student("Taro", 13) # インスタンスの生成
taro.profile() # インスタンスメソッドの実行
【実行結果】
名前:Taro
年齢:13
コンストラクタとメソッドの役割や使い方については、次の項目で詳しく解説します。
classのコンストラクタとは?
コンストラクタは、インスタンスの生成時に自動で実行される特殊なメソッドです。
主に、インスタンスごとの変数の値を初期化するために使用します。
具体的な例としては、先ほどのサンプルコードに記述されていた 「__init__」 メソッドがコンストラクタにあたります。コンストラクタには複数の引数を渡すことができるので、引数を元に任意の値を初期化することができます。
【サンプルコード】
class sampleClass:
def __init__(self, message):
self.message = message # 引数messageを使用して変数を初期化
def sayMessage(self):
print(f"{self.message}")
sampleCls = sampleClass("Hello World!")
sampleCls.sayMessage()
【実行結果】
Hello World!
インスタンスを使用して実行したメソッドは、暗黙的にインスタンス自身が引数として渡されます。
そのため、メソッドの第1引数にインスタンスを受け取るための 「self」 を指定しないと、エラーが発生してしまいます。
コンストラクタに限らず、インスタンスメソッドを定義する際には必ず 「self」 を引数に記述するようにしましょう。
classのメソッドとは?
メソッドとは、クラス内に定義された関数のことを指します。
引数を元にデータを整理したり、計算処理を行ったりなど、役割ごとにまとめたい処理内容をメソッドとして記述します。
クラス内に定義したメソッドは、生成したインスタンスからしか呼び出すことができません。
ただし、同一クラス内に定義したメソッド同士であれば、メソッドの引数に渡される 「self」 インスタンスを使用して呼び出しを行うことができます。
【サンプルコード】
class additionClass:
def __init__(self, num1, num2):
self.num1 = num1
self.num2 = num2
def addition(self):
result = self.num1 + self.num2
return result
def showResult(self):
print(self.addition())
cls = additionClass(10, 20)
cls.showResult()
【実行結果】
30
引数に渡されるインスタンスを使用して、「showResult」 メソッド内で同じクラスに記述されている 「addition」 メソッドを呼び出しています。
先ほども解説したように、メソッドを定義する際は必ず 「self」 を第1引数に指定するようにしましょう。
オブジェクト指向のメリットとは?classの使いどころを理解する
オブジェクト指向は、Pythonだけでなく多くの言語で採用されています。
その理由に、いくつかの大きなメリットが存在します。
1つは、クラスごとに処理内容をまとめることで、コード量の削減に繋げることができる点です。
同じような内容の処理を1つのクラスとして形式化することで、プログラム全体のコード量が減り可読性が向上します。
また、処理内容に変更があった際などに、クラス化しておくと管理が容易になります。
もう1つは、コードのカプセル化が行える点です。
カプセル化とは、別のオブジェクトから直接利用される必要のないデータや処理を隠すことを言います。
データやメソッドの操作にインスタンスを挟むことで、コードの変更などに伴ってプログラムが意図せず破壊されてしまうリスクを減らすことができます。
開発するプログラムの規模が大きくなるほど、受けられるメリットも大きくなるのがオブジェクト指向の特徴です。
まとめ
今回は、Pythonでのclassの使い方について解説しました。
オブジェクト指向におけるクラスの概念やその使い方を理解することは、オブジェクト指向に対応した言語でプログラミングをする上では必須とも言えるので、ぜひ覚えておきたいところです。
Pythonでのclassについてしっかりと理解できるまで、ぜひ何度でも読み返してみてください!
Pythonの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、Pythonに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。