Pythonにおけるクラス基礎
執筆者:南波真之
※本記事は吉政創成株式会社「Python学習とキャリアアップ」より寄稿されたコラムとなります。

私は現在、Pythonについて勉強を進めています。というのも、AIやデータ分析、アプリケーション開発など様々な状況でPythonは活用されており、テクノロジー業界で活躍していくためには必要だと思っているからです。
と言っても、私はエンジニアではない文系の人間です。
「解きながら学ぶ Pythonつみあげトレーニングブック」を使って、Pythonの一番基本的なところを学んでいます。そこで、自分で学習してきて感じたポイントや疑問、皆さんにシェアできることを書いていきます。
今回は、P.162〜P.166の部分になります。Pythonのクラスについて取り上げます。クラスというものがどういうもので、どういうときに使うのか、学習してみました。
Pythonのクラスとは
まず、「クラス」とは何かというと、必要な構造のデータが無い場合、データの構造を自分で規定する事ができます。これをクラスといいます。今までのわたしの勉強範囲では、Pythonにもともと用意されているものを使ってきたのですが更に拡張した使い方になります。
もう少し細かく説明すると、クラスは値を記憶する変数と、その変数を操作・使用するメソッドを定義する設計図と言われています。そしてこのクラスから実際に作られるデータを「インスタンス(実体)」と呼びます。セットで覚えておきたいですね。
具体例として書籍の例がとてもわかり易かったので紹介します。
人についての情報が記載されたPersonというクラス(設計図)があるとします。この場合Personクラスから作られるインスタンス(実体)は1人の人ということになります。そしてこのクラス(設計図)には情報が書いてあるわけですが、人についての情報を記憶するのが「変数」です。その変数を操作するのが「メソッド」と呼ばれます。そして、クラスとインスタンスをまとめて「オブジェクト」と言います。
用語がすごく出てきましたが、Pythonだけではなくプログラミングをする上で汎用的な知識ですので覚えておきましょう。
例えば、Personクラスには、変数 nameというのがありここには人の名前が記憶されていきます。そしてintroduce_selfメソッドには変数 nameで自己紹介をする、というようなイメージです。
クラスの定義
Pythonのクラスの定義については、classというキーワードを先頭に書いて始めます。
class Person:
def メソッド名(引数1, ...)
メソッド内の処理
def メソッド名(引数1, ...)
メソッド内の処理
クラス名については、2単語以上で定義したい場合はキャメルケースで書きます。例えば、Person nameというクラス名にしたい場合は、 PersonName となります。
次に、インスタンス変数についてです。個々のインスタンスに独自の値を持たせるためには、インスタンス変数を使います。これは、以下のように定義します。
# クラスを初期化する __init__メソッドを利用する
# メソッドを定義する場合、必ず第1引数にselfという値を受け取る必要がある
def __init__(self, 引数1, ...):
# selfはインスタンス自体が入った変数のこと
# インスタンスからメソッドを呼び出す際には、第1引数としてインスタンス自体が渡され、仮引数selfに格納される
self.インスタンス変数1 = 引数1
ちなみに、 __init__ はコンストラクタとも呼ばれます。インスタンス化されたときに最初に呼ばれる特別なメソッドのことです。
変数にはクラス変数というものもあり、これは同じクラスから作られた全てのインスタンスに共通する値を設定したい場合に使用します。クラス変数は、classキーワードを使ったすぐ下に変数と代入する値を書きます。
# クラス変数を定義
my_dog_name = 'イヌ太郎'
print(TestClass.my_dog_name)
↓(出力結果)
イヌ太郎
インスタンス変数の部分で、 __init__ メソッドを使いましたが、独自のメソッドを定義することもできます。これは、def というキーワードに続いてメソッド名と引数を書くことで定義します。
例えば以下の場合、def introduce_self(self): となっている部分がありますが、これが独自のメソッドを定義しているところです。メソッドは第1引数にselfを受け取る必要があることは変わりません。
class Person:
def __init__(self, name): # メソッドの定義
self.name = name
def introduce_self(self): # メソッドの定義
print(f'私の名前は、{self.name}です。')
haruhiko = Person('春彦')
natsuhiko = Person('夏彦')
akihiko = Person('秋彦')
fuyuhiko = Person('冬彦')
# メソッド呼び出し
haruhiko.introduce_self()
natsuhiko.introduce_self()
akihiko.introduce_self()
fuyuhiko.introduce_self()
なかなか分かりづらいところではありますが、このようにして独自のクラスは作成していきます。データ構造を自分で定義してより高度な実装をしていくためには必須の知識になりますので、引き続きクラスについては学んでいきたいと思います。
クラスのような概念的な部分もしっかり理解することが大事
今回は、Pythonにおけるクラスについて学習してきました。概念的なところや用語も多く、理解できるまでには少し時間がかかりそうです。
しかし、実際にコードを書いていくこと、何かを作ってみることで理解が深まることは確実ですので、手を動かしながらぜひ理解してPython学習を進めていきましょう。
インターネット・アカデミーは、Python講座が充実しています。Python認定スクールにもなっているため質の高い知識を得ることができ、基礎学習の先にあるそれぞれの目標を目指していくためには良い場所となります。ご興味ある方は各講座のページを覗いてみてください。
南波真之
デジタル人材育成・助成金のお役立ち資料をダウンロード

デジタル人材育成や助成金活用のお役立ち資料などをまとめてダウンロードしていただけます。コンサルタントへの無料相談をご希望の方はこちらからお問い合わせください。
- DX人材の育成&事例紹介 リスキリングのロードマップ付き
- デジタル人材育成に使える助成金制度
- デジタルスキル標準 役割別おすすめ講座