【Python入門】クラスの使い方を簡単解説で楽々マスター

Pythonでクラス(class)の使い方を理解したい
そもそもクラスやオブジェクト指向って何?
コンストラクタ?メソッド?継承?ってなに?

プログラミング言語において、「クラス(class)」や「オブジェクト指向」という言葉をよく耳にしますが、使い方を理解していますでしょうか?クラスを簡単に説明すると、処理を1つのまとまりとして定義したもので、あらゆるプログラミング言語で使われています。

この記事ではクラスの使い方やコンストラクタ、メソッド、継承などについて理解しておきたい方に向けて、基本的な内容を解説していきます。

この記事はこんな人のために書きました。

  • 基本的なクラスの作り方を知りたい
  • コンストラクタ、メソッド、継承についても理解しておきたい

クラスについてわかりやすく解説していますので、ぜひ参考にしてください。

※ この記事のコードはPython 3.7で動作確認しました。

Pythonのクラスとは

Pythonにはクラスという機能があります。このクラスを理解するためには、オブジェクト指向とは何かについても知る必要があります。

オブジェクト指向とは、基本的にオブジェクト(物)で構成されたプログラミング言語の種類のことを言います。Pythonではクラスや関数もすべて「オブジェクト」として扱われます。

そして、今回のメインであるクラスを元にして新しくオブジェクトを生成することが出来ます。

こちらの記事を読んで、さらにオブジェクト指向についての知識を深めてからクラスについて学習していきましょう!

脱初心者のためのオブジェクト指向再入門
更新日 : 2019年8月15日

Pythonのクラスの使い方

では、オブジェクト指向についての基本を学んだら、実際にPythonでクラスを作ってみましょう。

クラスの基本的な構文

Pythonにおけるクラスの基本的な構文はこのようになっています。

class ClassName():
    def __init__(self, ):
         hogehoge

小文字の「class」の後に、好きなクラス名を指定しましょう。関数では「def」で定義をしていましたが、ここでは「class」になります。引数は、今回は空欄にしておきましょう。

そしてclassから始まる構文の内部に「__init__」という関数が定義されています。これはコンストラクタという、クラスの中でも重要な機能になります。

コンストラクタについては次の章で解説します。

コンストラクタとは

コンストラクタとは、「__init__」という名前の部分です。コンストラクタは、インスタンスを作成する際に重要な処理を含むものです。

どのように生成するか、どのようなデータを持たせるかなど、といった情報を定義するのに必要なメソッドになります。

引数にselfというものがあるのに注意してください。selfとはインスタンス自身を指し、基本的にはこの引数は必須なので忘れないように気を付けてくださいね。

では実際にクラスを作成してみましょう。こちらのコードを見てみましょう。

class MyClass():
    def __init__(self, message):
        self.value = message
 
myinstance = MyClass("Hello!")
print(myinstance.value)

実行結果

Hello!

こちらのコードでは、コンストラクタの引数にselfとmessageを指定しました。このインスタンスのデータにmessageを追加したいので、valueという属性(アトリビュート)を追加し、第二引数のmessageを代入したのです。

そしてインスタンスを生成するために、インスタンスを代入する変数名 = クラス名(引数)と、呼び出しました。ご覧いただけるように、ちゃんと「Hello!」と表示されましたね。

メソッドとは

コンストラクタという特別なメソッドの定義方法をご紹介しました。この章では、インスタンスの振る舞いや行動を表現するメソッドの定義方法をご紹介したいと思います。

メソッドとは、クラス内に定義された関数のことです。メソッドは定義されたクラスからしか呼び出すことが出来ないのも、特徴の一つです。

class Example():
 
    def __init__(self, a,b,c):
        self.num1 = a
        self.num2 = b
        self.num3 = c
 
    def print_tot(self):
        tot = self.num1+self.num2+self.num3
        print(tot)
 
myinstance = Example(1,2,3)
myinstance.print_tot()

実行結果

6

上のコードでは、Exampleという名前のクラスを定義しました。Exampleはコンストラクタとprint_totというメソッドのみを含んでいます。

コンストラクタでは引数に指定したa、b、cを属性num1、num2、num3に代入しています。そして、print_totは生成したインスタンスが持つ属性三つの合計を計算し、出力します。

実際、myinstanceを引数1、2、3で作成したところ、合計は6と表示されました。

継承とは

プログラムを書いていると、あるクラスを元にその派生クラスを作りたい場合があると思います。そのようなケースでは、継承を使用すると便利です。

class Oya():
    def oya_func(self):
        print("I am OYA")
         
class Kodomo(Oya):
    def kodomo_func(self):
        print("I am Kodomo")
 
k = Kodomo()
 
k.oya_func()
k.kodomo_func()

実行結果

I am OYA
I am Kodomo

こちらのコードでは、Oyaクラスを元にKodomoクラスを作成しました。継承では、継承先となる子クラスの引数に、親クラスを渡しています。

継承を行っているので、Kodomoクラスのインスタンスは自分が所有しているkodomo_funcというメソッドに加え、Oyaクラスのoya_funcまでも呼び出せるのです。

このままPythonを学び続けて大丈夫?

なぜPythonを学ぶのか?

あなたがPythonを学ぶ理由は何でしょうか?

  • Pythonが人気だからとりあえず学んでいる
  • AIや機械学習の分野に興味があるから

Pythonは初心者向けの言語と言われています。その理由としてシンプルでわかりやすい構文や、実用的なライブラリが豊富なことが挙げられ、実際に学びやすい言語です。

しかし、もしあなたが機械学習に興味があって、とくに知識も無いまま学習を進めると、挫折する可能性が高いと言えます。

機械学習の分野はプログラミング以外にも、専門的な知識や数学の知識も必要になります。ただなんとなく学習していると早い段階でつまづきやすく、そのまま挫折してしまうなんてことも…。

そのため、挫折しないためには、

  • 最適な学習環境を用意する
  • 必要なライブラリ・ツールを導入する
  • わからないことを質問できるメンターを見つける

などが必要になります。

効率よく学びたいなら、無料体験レッスンがおすすめ

このままPythonを学び続けていいのかな…
まだまだ知りたいことがたくさんある!
もっと詳しくPythonについて知りたい!

といった悩みや願望を持っている方は、弊社「侍エンジニア塾」をご利用下さい。

侍エンジニア塾では、

  • 現役エンジニアによるマンツーマンレッスン
  • キャリアアドバイザーによる転職・就職支援
  • 業界屈指のフリーランス・起業サポート

を受けることができます。

業界屈指のコンサルタントから、効率的な学習方法や仕事獲得術、今後のキャリアまでさまざまな疑問を相談してみませんか?遠方の方でもオンラインで受講できます!お気軽に受講下さい。

侍エンジニア塾
無料体験レッスンを受ける

まとめ

今回は、Pythonにおけるクラスの基本をご紹介しました。

覚えておきたいポイントは

  • コンストラクタを定義する際はselfを引数に指定するのを忘れない!
  • メソッドは関数なのでdefキーワードを使用する
  • あるクラスをベースに新しいクラスを作りたい場合は継承!
  • こんな感じですね。

    では皆さんもこの記事を通してクラスについての知識をどんどん深めていってくださいね。

    LINEで送る
    Pocket

    SEからWebエンジニアへ転職した理由

    侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

    SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

    弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

    「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
    更新日 : 2019年10月7日

    書いた人

    Kotono

    Kotono

    イタリア在住15年目の22歳です。イタリアの大学で情報科学&応用数学を学んでいます。主にJavaScriptやPythonについての記事を書いたりしています。

    おすすめコンテンツ

    あなたにぴったりなプログラミング学習プランを無料で診断!

    プログラミング学習の効率を劇的に上げる学習メソッドを解説