【Python入門】classの使い方・使用例をわかりやすく解説

  • 2026.03.19
       
【Python入門】classの使い方を詳しく解説!オブジェクト指向をマスターする

本記事では、Pythonで使うclass(クラス)を、詳しくみていきます。

プログラミングには、システム構成の考え方の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("太郎", 13) # インスタンスの生成
taro.profile() # インスタンスメソッドの実行

【実行結果】

名前:太郎
年齢:13

コンストラクタとメソッドの役割や使い方については、次の項目で詳しく解説します。

classのコンストラクタとは?

コンストラクタは、インスタンスの生成時に自動で実行される特殊なメソッドです。
主に、インスタンスごとの変数の値を初期化するために使用します。

具体的な例としては、先ほどのサンプルコードに記述されていた 「__init__」 メソッドがコンストラクタにあたります。コンストラクタには複数の引数を渡すことができるので、引数を元に任意の値を初期化することができます。

【練習】

下の枠で「init」メソッドを用いて変数を初期化し、「Hello World!」と出力してみましょう。
※現在はエラーが表示されていますが、正しくコードを記述すれば出力されます。
 続けてサンプルコードがあります。

【サンプルコード】

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」 を引数に記述するようにしましょう。

selfとは?

self は、今操作しているインスタンス自身を指します。
たとえば taro.greet() を実行した場合、メソッド内の self は taro を指します。
そのため self.name は taro.name を意味し、「太郎」が取り出されます。

同様に hanako.greet() を実行した場合、self は hanako を指すため、self.name は hanako.name となり、「花子」が取り出されます。
このように self を使うことで、同じ class から作成した複数のインスタンスでも、それぞれ異なるデータを持たせて扱えます。

【サンプルコード】

Python
class Student:
    def __init__(self, name):
        self.name = name

    def greet(self):
        print(f"私は{self.name}です。")

taro = Student("太郎")
hanako = Student("花子")

taro.greet()
hanako.greet()

【実行結果】

私は太郎です。
私は花子です。

classのメソッドとは?

メソッドとは、クラス内に定義された関数のことを指します。
引数を元にデータを整理したり、計算処理を行ったりなど、役割ごとにまとめたい処理内容をメソッドとして記述します。

クラス内に定義したメソッドは、生成したインスタンスからしか呼び出すことができません。
ただし、同一クラス内に定義したメソッド同士であれば、メソッドの引数に渡される 「self」 インスタンスを使用して呼び出しを行うことができます。

【サンプルコード】

Python
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
class Person:
    def __init__(self, name):
        self.name = name

    def introduce(self):
        print(f"{self.name}さんは男性です。")

class Student(Person):
    def show_age(self, age):
        print(f"{self.name}さんは{age}歳です。")

yamada = Student("山田")

yamada.introduce()
yamada.show_age(20)

【実行結果】

山田さんは男性です。
山田さんは20歳です。

継承した基底クラス内で既に定義されているメソッドの内容を、派生クラス側で再定義するオーバーライドという機能もあります。
基底クラス内で定義したメソッドはそのまま派生クラスでも使用することができますが、いくつかの条件をクリアすることで、処理内容を派生クラス独自のものに変更することができます。

【サンプルコード】

Python
class CollegeStudent(Student):
    def show_age(self, age):
        super().show_age(age)
        print(f"{self.name}さんは大学生です。")

yamada_univ = CollegeStudent("山田")

yamada_univ.introduce()
yamada_univ.show_age(20)

【実行結果】

山田さんは男性です。
山田さんは20歳です。
山田さんは大学生です。

なぜPythonでclassが必要なのか

Pythonのclassは、単に書き方が増えるわけではありません。
複数のデータと処理をひとまとまりで管理したいときに、コードの見通しと保守性を大きく高めるために使います。
ここでは、関数だけで書いた場合とclassで書いた場合を比較して、違いを見てみましょう。

【サンプルコード】関数だけで書いた場合

Python
def create_student(name, age):
    return {"name": name, "age": age}

def update_age(student, age):
    student["age"] = age

def show_profile(student):
    print(f"名前: {student['name']}")
    print(f"年齢: {student['age']}")

student1 = create_student("太郎", 13)
update_age(student1, 14)
show_profile(student1)

【実行結果】

名前: 太郎
年齢: 14

【サンプルコード】classで書いた場合

Python
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def update_age(self, age):
        self.age = age

    def show_profile(self):
        print(f"名前: {self.name}")
        print(f"年齢: {self.age}")

student1 = Student("太郎", 13)
student1.update_age(14)
student1.show_profile()

【実行結果】

名前: 太郎
年齢: 14

どちらも同じ結果を出せますが、扱うデータが増えるほど差が出ます。
関数だけで書く場合は、毎回 student を引数で渡し、辞書のキー名も意識しなければなりません。
一方で class を使うと、name や age といったデータと、そのデータを操作する update_age() や show_profile() をひとまとめにできます。
そのため、機能追加や修正が入っても、関連する処理を class の中だけ見ればよくなり、保守しやすいコードになります。

まとめ

今回は、Pythonでのclassの使い方について解説しました。
オブジェクト指向におけるクラスの概念やその使い方を理解することは、オブジェクト指向に対応した言語でプログラミングをする上では必須とも言えるので、ぜひ覚えておきたいところです。

Pythonでのclassについてしっかりと理解できるまで、ぜひ何度でも読み返してみてください!

Pythonの勉強方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、Pythonに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

     

Programmingカテゴリの最新記事