Pythonにおけるクラス基礎

皆さん、こんにちは。

南波真之(なんばさねゆき)と申します。

私は現在、Pythonについて勉強を進めています。というのも、AIやデータ分析、アプリケーション開発など様々な状況でPythonは活用されており、テクノロジー業界で活躍していくためには必要だと思っているからです。

と言っても、私はエンジニアではない文系の人間です。

解きながら学ぶ Pythonつみあげトレーニングブック」を使って、Pythonの一番基本的なところを学んでいます。そこで、自分で学習してきて感じたポイントや疑問、皆さんにシェアできることを書いていきます。

今までの学習記事はこちらからご覧ください。

解きながら学ぶ Pythonつみあげトレーニングブックを読んでつまづいたところをまとめたコラム

今回は、P.162〜P.166の部分になります。

Pythonのクラスについて取り上げます。クラスというものがどういうもので、どういうときに使うのか、学習してみました。

目次

Pythonのクラスとは

まず、「クラス」とは何かというと、必要な構造のデータが無い場合、データの構造を自分で規定する事ができます。これをクラスといいます。今までのわたしの勉強範囲では、Pythonにもともと用意されているものを使ってきたのですが更に拡張した使い方になります。

もう少し細かく説明すると、クラスは値を記憶する変数と、その変数を操作・使用するメソッドを定義する設計図と言われています。そしてこのクラスから実際に作られるデータを「インスタンス(実体)」と呼びます。セットで覚えておきたいですね。

具体例として書籍の例がとてもわかり易かったので紹介します。

人についての情報が記載されたPersonというクラス(設計図)があるとします。この場合Personクラスから作られるインスタンス(実体)は1人の人ということになります。そしてこのクラス(設計図)には情報が書いてあるわけですが、人についての情報を記憶するのが「変数」です。その変数を操作するのが「メソッド」と呼ばれます。そして、クラスとインスタンスをまとめて「オブジェクト」と言います。

用語がすごく出てきましたが、Pythonだけではなくプログラミングをする上で汎用的な知識ですので覚えておきましょう。

例えば、Personクラスには、変数 nameというのがありここには人の名前が記憶されていきます。そしてintroduce_selfメソッドには変数 nameで自己紹介をする、というようなイメージです。

(参考:Python公式ドキュメント「クラス」

クラスの定義

Pythonのクラスの定義については、classというキーワードを先頭に書いて始めます。

# 先頭にキーワードのclassを記述し、その後に先頭大文字でクラス名を定義
class Person:
    def メソッド名(引数1, ...)
        メソッド内の処理

    def メソッド名(引数1, ...)
        メソッド内の処理
 

クラス名については、2単語以上で定義したい場合はキャメルケースで書きます。例えば、Person nameというクラス名にしたい場合は、 PersonName となります。

次に、インスタンス変数についてです。個々のインスタンスに独自の値を持たせるためには、インスタンス変数を使います。これは、以下のように定義します。

class Person:
# クラスを初期化する __init__メソッドを利用する
# メソッドを定義する場合、必ず第1引数にselfという値を受け取る必要がある
    def __init__(self, 引数1, ...):
# selfはインスタンス自体が入った変数のこと
# インスタンスからメソッドを呼び出す際には、第1引数としてインスタンス自体が渡され、仮引数selfに格納される
        self.インスタンス変数1 = 引数1
 

ちなみに、 __init__ はコンストラクタとも呼ばれます。インスタンス化されたときに最初に呼ばれる特別なメソッドのことです。

変数にはクラス変数というものもあり、これは同じクラスから作られた全てのインスタンスに共通する値を設定したい場合に使用します。クラス変数は、classキーワードを使ったすぐ下に変数と代入する値を書きます。

class TestClass:
# クラス変数を定義
    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認定スクールにもなっているため質の高い知識を得ることができ、基礎学習の先にあるそれぞれの目標を目指していくためには良い場所となります。

よく、「プログラミングは独学でもなんとかなる」という情報もありますが、新しいことを学んでいく際の近道は「プロに教えてもらうこと」です。

インターネット・アカデミーはキャリアサポートも充実しており、一人ひとりに専任のキャリアプロデューサーがサポートしてくれるため中途半端になることがありません。

ご興味ある方は各講座のページを覗いてみてください。無料カウンセリングもできます。

Pythonの基礎からDjangoフレームワークを使ったWebアプリケーションを作りたい方向けの「Python講座」

Pythonを活用したAIプログラミング、機械学習を実装したい方向けの「AIプログラミング講座」

※上記の講座は「解きながら学ぶ Pythonつみあげトレーニングブック」を基にした研修コースではありません。

良い記事だなって思ったら、是非シェアをお願いします!
  • URLをコピーしました!
  • URLをコピーしました!
目次