そもそもクラスやオブジェクト指向って何?
コンストラクタ?メソッド?継承?ってなに?
プログラミング言語において、「クラス(class)」や「オブジェクト指向」という言葉をよく耳にしますが、使い方を理解していますでしょうか?クラスを簡単に説明すると、処理を1つのまとまりとして定義したもので、あらゆるプログラミング言語で使われています。
この記事ではクラスの使い方やコンストラクタ、メソッド、継承などについて理解しておきたい方に向けて、基本的な内容を解説していきます。
この記事はこんな人のために書きました。
- 基本的なクラスの作り方を知りたい
- コンストラクタ、メソッド、継承についても理解しておきたい
クラスについてわかりやすく解説していますので、ぜひ参考にしてください。
※ この記事のコードはPython 3.7で動作確認しました。
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
Pythonのクラスとは
Pythonにはクラスという機能があります。このクラスを理解するためには、オブジェクト指向とは何かについても知る必要があります。
オブジェクト指向とは、基本的にオブジェクト(物)で構成されたプログラミング言語の種類のことを言います。Pythonではクラスや関数もすべて「オブジェクト」として扱われます。
そして、今回のメインであるクラスを元にして新しくオブジェクトを生成することが出来ます。
こちらの記事を読んで、さらにオブジェクト指向についての知識を深めてからクラスについて学習していきましょう!
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におけるクラスの基本をご紹介しました。
覚えておきたいポイントは
- コンストラクタを定義する際はselfを引数に指定するのを忘れない!
- メソッドは関数なのでdefキーワードを使用する
- あるクラスをベースに新しいクラスを作りたい場合は継承!
こんな感じですね。
この記事を通してクラスについての知識をどんどん深めていってください!
なお、この記事ではクラスについて紹介しましたが、これ以外にもPythonの基礎知識などが知りたい方は以下記事をどうぞ!
Pythonをはじめて学ぶ方のために、Pythonでできることや学習法を中心にご紹介していますので、きっと参考になるかと思います。
【Python入門 完全攻略ガイド】
https://www.sejuku.net/blog/curriculums-python