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

プログラミング道場

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

プログラミング言語 スクリプト言語 コンパイル言語 アプリ開発 サーバー、インフラ、セキュリティなど 機械学習系 ゲーム開発 データベース 子供向け デザイン その他 おまけ まとめ この記事では、様々な書籍を紹介しました。 是非、自分に合 ...

続きを見る

【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 for your engineer life!

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

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

Pythonをより詳しく勉強したい人は、この記事を読んで下さい

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

初心者向け【入門編】 スラスラ読める Pythonふりがなプログラミング ふりがなプログラミングシリーズのPython版です。 文句なしに、やさしい内容なので、これからプログラミングを始めてみようという人は、この本から始めると良いかもしれま ...

続きを見る


機械学習をより詳しく勉強したい人は、この記事を読んで下さい

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

概念的な理解 機械学習エンジニアになりたい人のための本 機械学習について書かれている本です。 機械学習エンジニアになりたい人向けに、仕事内容や必要な知識レベルが書かれています。 機械学習エンジニアなるための勉強法などが書かれているのは嬉しい ...

続きを見る


統計学をより詳しく勉強したい人は、この記事を読んで下さい

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

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

続きを見る


数学をより詳しく勉強したい人は、この記事を読んで下さい

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

中学生レベル 中学校3年分の数学が教えられるほどよくわかる 大人になって数学から離れている人にオススメの一冊です。 中学生が読んでも大人が読んでも役に立つ本です。 「なんとなく」の理解から「人に教えられる」ほどの理解になるはずです^^ 高校 ...

続きを見る


Rをより詳しく勉強したい人は、この記事を読んで下さい

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

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

続きを見る


Juliaをより詳しく勉強したい人は、この記事を読んで下さい

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

初心者向け 開発エンジニアにおくる次世代プログラミング言語Juliaのすすめ Juliaの基礎的な文法を学びたい人は、この本を手にとってみて下さい。 kindle unlimitedで読むこともできます^^ 中級者向け Juliaプログラミ ...

続きを見る

関連コンテンツ

-Python, プログラミング

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