プログラミング、フリーダイビング、ブロックチェーンのブログ

プログラミング道場

私がオススメするプログラミング教材です

私がおすすめするプログラミング教材のまとめ【書籍】

目次1 これからエンジニアになりたい人へ向けた本2 プログラミング言語3 アプリ開発4 サーバー、インフラ、セキュリティなど5 機械学習系6 ゲーム開発7 データベース8 デザイン9 組織作り10 自作シリーズ11 その他12 おまけ これ ...

続きを見る

【Python入門】クラス(class)の使い方

更新日:

記事の内容


この記事では、Pythonのクラスの定義方法や使い方について説明していきたいと思います。
なお、このコードはPythonの3系で書かれています。

クラス(class)とは何か?

クラスとは、データを管理する型であり、設計図でもあります。
そのため、クラス名は抽象的な名前になりがちです。
例えば、車を管理するクラスを作りたいとします。
その場合、クラス名は、「プリウス」「ベンツ」という具体的な名前にはなりません。
クラス名は、「Car」といった抽象的な名前をつけます。
なぜならば、繰り返しにはなりますが、クラスは設計図であり抽象的なものを表すからです。

インスタンス(オブジェクト)とは何か?

クラスは設計図なので、それを実際に動かすためには、クラスを組み立てて実体化させてやる必要があります。
その作業を「インスタンス化する」と言ったり、「オブジェクトを生成する」と呼んだりします。

クラスの定義方法

クラスを定義するためには、「class」というキーワードを使います。
クラス名の先頭は、常に大文字にして下さい。
具体的には、このように定義します。

class クラス名():

空のクラスを実装する時は、「pass」というキーワードを使います。

class クラス名():
pass

インスタンスの使い方

インスタンスを生成するためには、「クラス名()」という風にして、定義するだけです。
一つのクラスに対して、インスタンスは、いくつでも作成することができます。

インスタンスメソッドとインスタンス変数

クラスに「インスタンスメソッド」と「インスタンス変数」を定義する

今までは、クラスの定義方法とインスタンスの使い方について紹介しました。
ここでは、実際にクラスを使う方法を紹介します。

クラスには、インスタンスメソッドと、インスタンス変数という2つのモノを定義することができます。
インスタンスメソッドは、クラスの中に「def」というキーワードを使って定義します。
そして、インスタンスメソッドの引数には、「self」というキーワードを入れます。

インスタンス変数は、「self」というキーワードを使って定義します。
インスタンス変数は、クラスの中で共有される変数です。
「self」を付けない変数とのスコープの違いを意識すると、よりインスタンス変数の意義がわかるはずです。

この2つは、クラスからインスタンスを生成することで、使うことができるようになります。
「インスタンスメソッド」と「インスタンス変数」は、クラスのままでは使うことができません。

「__init__」というキーワードを使って、インスタンスに初期値を与える

「__init__」メソッドは、オブジェクトが生成される時に実行されるメソッドなので、インスタンス変数に初期値を設定することができます。
「__init__」メソッドのように、「オブジェクトが生成される時に実行されるメソッド」をコンストラクタと呼びます。

「__init__」メソッドを使って、先程のコードを綺麗に書いてみます。
コンストラクタを使うことで、インスタンスを生成したタイミングで、nameに値をセットできたことがわかります。

クラスメソッド

クラスには、クラスメソッドというものもあります。
クラスメソッドは、個々のインスタンスに含まれる必要がないデータを扱う時に使います。
例えば、Carクラスで言えば、車を作るメソッドは、インスタンスメソッドに含まれる必要がありません。
なぜならば、carインスタンスは、プリウスやベンツといった個々の車のデータを管理していて、「車を作る」という作業内容をcarインスタンスが持つ必要はないからです。

クラスメソッドは、メソッド名の前に「@classmethod」をつけることで定義することができます。
メソッドの引数には、「cls」を入れます。
クラスメソッドを使う場合は、インスタンス化をせずに使うことができます。

クラス変数

クラスの中には、クラス変数を定義することもできます。
クラス変数は「self」というキーワードをつけないで、クラスの直下に定義します。
先程、車を作る「create」メソッドがありましたが、車の製造台数を管理したい場合に、クラス変数を使います。
なぜならば、車の製造台数といった情報も、個々のインスタンスが持つ必要のない情報だからです。
今回は、車を2台作成した後で、3台目を作成しました。
その際にも、車の製造台数が保持されていることがわかるはずです。

クラスでデータを管理すると便利

「何で、クラスを使う必要があるのか?」「Dictionaryでもデータを管理できるのではないか?」という疑問を持つ方もいるかもしれません。
確かに、上記の規模のデータならば、Dictionaryでデータを管理することもできそうです。
ただし、Dictionaryはキーを追加したり削除をすることもできるので、脆くて壊れやすいプログラムになりがちです。
そのため、より堅牢で扱いやすいデータ型を作るために、Carクラスを作成するのが一般的です。

まとめ

この記事では、クラスとインスタンスに関することを説明しました。
クラスを理解することで、様々なコードを柔軟に書くことができるようになるはずです。

Good luck with your engineer life!

この記事が面白かった人は、こちらの記事も読んでみて下さい。

【Python入門】クラスの継承の使い方

目次1 クラスの継承2 オーバーライド3 まとめ クラスの継承 クラスの継承を試してみよう クラスの継承とは、既に定義済みのクラスやメソッドを再利用するようなイメージです。 クラスの継承をするためには、クラス名の()に親クラスの名前を代入し ...

続きを見る

Pythonをより詳しく勉強したい人には、この記事がオススメです

Pythonの学習でおすすめの本と動画【2024年最新】

目次1 関連記事の紹介2 動画教材3 初心者向け【入門編】4 中級者向け5 上級者向け 関連記事の紹介 自然言語処理については、この記事を読んで下さい MLOpsについては、この記事を読んで下さい 機械学習については、この記事を読んで下さい ...

続きを見る


Djangoをより詳しく勉強したい人には、この記事がオススメです

Djangoの学習でおすすめの本と動画【2024年最新】

目次1 関連記事の紹介2 動画教材3 中級者向け 関連記事の紹介 Pythonについては、この記事を読んで下さい 自然言語処理については、この記事を読んで下さい MLOpsについては、この記事を読んで下さい 機械学習については、この記事を読 ...

続きを見る


Flaskをより詳しく勉強したい人には、この記事がオススメです

Flaskフレームワークの学習でおすすめの本と動画【2024年最新】

目次1 関連記事の紹介2 動画教材3 中級者向け 関連記事の紹介 Pythonについては、この記事を読んで下さい 自然言語処理については、この記事を読んで下さい MLOpsについては、この記事を読んで下さい 機械学習については、この記事を読 ...

続きを見る


機械学習をより詳しく勉強したい人には、この記事がオススメです

機械学習でおすすめの本と動画【2023年最新】

目次1 関連記事の紹介2 動画教材3 概念的な理解4 初心者向け【入門編】5 中級者向け6 上級者向け 関連記事の紹介 自然言語処理については、この記事を読んで下さい MLOpsについては、この記事を読んで下さい 機械学習で使う数学について ...

続きを見る


MLOpsをより詳しく勉強したい人には、この記事がオススメです

MLOpsでおすすめの本と動画【2024年最新】

目次1 関連記事の紹介2 動画教材3 中級者向け 関連記事の紹介 自然言語処理については、この記事を読んで下さい 機械学習については、この記事を読んで下さい Kaggleについては、この記事を読んで下さい 機械学習で使う数学については、この ...

続きを見る


統計学をより詳しく勉強したい人には、この記事がオススメです

統計学の学習でおすすめの本と動画【2023年最新】

目次1 動画教材2 初心者向け3 中級者向け4 上級者向け 動画教材 いちばん理解できる統計学ベーシック講座その1【確率分布・推定・検定】 ▼ 興味がある方は、画像をクリック 統計学の基礎を効率的に学べるベーシック講座です。 統計学の入り口 ...

続きを見る


数学をより詳しく勉強したい人には、この記事がオススメです

機械学習に備えて数学を学習するためのおすすめの本と動画【2023年最新】

目次1 関連記事の紹介2 動画教材3 中学生レベル4 高校レベル5 結城先生シリーズ6 線形代数7 微積分8 ラプラス変換9 その他 関連記事の紹介 自然言語処理については、この記事を読んで下さい 機械学習については、この記事を読んで下さい ...

続きを見る


Rをより詳しく勉強したい人には、この記事がオススメです

Rの学習でおすすめの本と動画【2024年最新】

目次1 動画教材2 統計3 R言語自体の解説 動画教材 Rではじめる統計基礎講座 ▼ 興味がある方は、画像をクリック R言語を使って、「データ分析」や「データサイエンス」の基礎を覚えて、ビジネスで活きる「実践的な統計」を学びましょう。 医師 ...

続きを見る


Juliaをより詳しく勉強したい人には、この記事がオススメです

Juliaの学習でおすすめの本と動画【2024年最新】

目次1 動画教材2 初心者向け3 中級者向け 動画教材 はじめましてJulia~次世代のデータサイエンス・科学計算のためのプログラミング ▼ 興味がある方は、画像をクリック このJuliaプログラミングコースは、初心者から中級者を対象として ...

続きを見る

-Python, プログラミング

Copyright© プログラミング道場 , 2024 All Rights Reserved Powered by AFFINGER4.