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

プログラミング道場

自分の市場価値を知りたい人にオススメの記事です

【すぐできる】エンジニアとしての市場価値を診断してみよう!

エンジニアが市場価値を把握しておくべき理由 エンジニアは、なぜ市場価値を把握しておいた方がいいのか、まずはその理由について説明します。 エンジニアの市場価値を決める要素 エンジニアの市場価値を決める要素について説明します。 経験業務と年数 ...

続きを見る

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

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

これからエンジニアになりたい人へ向けた本 私が書いた、「これからエンジニアになりたい人」に向けた本です。 最近、世間ではプログラミングの必要性が声高く叫ばれるようになりました。 子供向けには2021年からプログラミング教育が義務教育で実施さ ...

続きを見る

無料で学べるPython講座です

【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入門】クラスの継承の使い方

クラスの継承 クラスの継承を試してみよう クラスの継承とは、既に定義済みのクラスやメソッドを再利用するようなイメージです。 クラスの継承をするためには、クラス名の()に親クラスの名前を代入します。 コードを見た方がわかりやすいと思うので、実 ...

続きを見る

Pythonエンジニアの求人

DODA

Pythonエンジニアは、約3500件の案件が登録されていました。

Pythonを使って働きたい人は、DODAに相談してみて下さい


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

Pythonの学習でおすすめの本と動画(Udemy)【2022年最新】

関連記事の紹介 自然言語処理については、この記事を読んで下さい MLOpsについては、この記事を読んで下さい 機械学習については、この記事を読んで下さい 機械学習で使う数学については、この記事を読んで下さい Kaggleについては、この記事 ...

続きを見る


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

Djangoの学習でおすすめの本と動画(Udemy)【2022年最新】

関連記事の紹介 Pythonについては、この記事を読んで下さい 自然言語処理については、この記事を読んで下さい MLOpsについては、この記事を読んで下さい 機械学習については、この記事を読んで下さい 機械学習で使う数学については、この記事 ...

続きを見る


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

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

関連記事の紹介 Pythonについては、この記事を読んで下さい 自然言語処理については、この記事を読んで下さい MLOpsについては、この記事を読んで下さい 機械学習については、この記事を読んで下さい 機械学習で使う数学については、この記事 ...

続きを見る


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

機械学習でおすすめの本と動画(Udemy)【2022年最新】

関連記事の紹介 自然言語処理については、この記事を読んで下さい MLOpsについては、この記事を読んで下さい 機械学習で使う数学については、この記事を読んで下さい Kaggleについては、この記事を読んで下さい PyTorchについては、こ ...

続きを見る


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

MLOpsでおすすめの本【2022年最新】

関連記事の紹介 自然言語処理については、この記事を読んで下さい 機械学習については、この記事を読んで下さい Kaggleについては、この記事を読んで下さい 機械学習で使う数学については、この記事を読んで下さい PyTorchについては、この ...

続きを見る


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

統計学の学習でおすすめの本と動画(Udemy)【2022年最新】

初心者向け マンガでわかる統計学 素朴な疑問からゆる~く解説 初心者にわかりやすいと評判の本です。 カラー刷りで、漫画イラストを絡めながら統計に関する情報が記載されています。 一度は統計学に挫折した人でも、この本ならばきっとやれると思います ...

続きを見る


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

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

関連記事の紹介 自然言語処理については、この記事を読んで下さい 機械学習については、この記事を読んで下さい Kaggleについては、この記事を読んで下さい MLOpsについては、この記事を読んで下さい PyTorchについては、この記事を読 ...

続きを見る


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

Rの学習でおすすめの本と動画(Udemy)【2022年最新】

統計 Rによるやさしい統計学 Rによる統計手法が関数ごとに非常にわかりやすく書かれています。 全て読めば、R関係のソフトウェアの統計解析が理解できるように思います。 Rによる多変量解析入門 多変量解析について勉強したい人にオススメの一冊です ...

続きを見る


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

Juliaの学習でおすすめの本と動画(Udemy)【2022年最新】

初心者向け 1から始める Juliaプログラミング 必要な事が簡潔にまとめられています。 juliaの難しい所をわかりやすく説明してくれている本です^^ 開発エンジニアにおくる次世代プログラミング言語Juliaのすすめ Juliaの基礎的な ...

続きを見る

関連コンテンツ

-Python, プログラミング

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