Python3の基本構文 第五回

クラス

いよいよオブジェクト指向プログラミングのクラスの説明に入ってきました。抽象的な考え方に基づくので
多少難しいかもしれませんが、頑張りましょ!

クラスまずは、ざっくりと!

Python のクラスは、「モノ(オブジェクト)」を作るための設計図のようなものです。例えば、「犬」というクラスを作れば、
その「犬」に関する情報(名前や年齢など)や、できること(吠える、歩くなど)を定義できます。
Pythonでは、クラスの名前の付け方に関して厳密なルールはありませんが、読みやすさと一貫性を保つために推奨されるガイドラインがあります。
これらは公式の PEP 8(Pythonのコーディング規約)によって定められています。
★主なガイドライン
1 キャメルケースを使用する MyClassとかDogとかSqlConnctとか。
2 大文字で始める DogとかPersonとかAgeとか。
3 簡潔で分かりやすい名前 CarとかUserAccountとか
4 名前衝突に気を付ける
5 Mail_Addとかアンダーバーで区切らない

★例外
内部クラスまたはプライベートクラス クラス名の先頭にアンダースコアを1つ付けることで、「これは内部的に使われるもの」
という意図を示せます。

クラスの基本構造

 

上記クラスを使ってみる。

出力


このコードは、Pythonのクラスを用いて犬の情報と動作を管理する設計図を作成するものです。
1 クラス定義
  class Dog:
  によってDogという名前のクラスを作っています。このクラスは犬の情報や動作を表すための設計図です。

2 コンストラクタメソッド ( __init__ )
  クラスからオブジェクトが作られるときに最初に実行される特別なメソッドです。
  このメソッドでは、犬の名前 (name) と年齢 (age) を受け取り、それをオブジェクトの属性として保存します。
  self.name = name によりオブジェクトの名前属性を設定し、self.age = age によって年齢属性を設定しています。
  selfはそのクラス自身を指しており、クラス内でそのオブジェクトの属性やメソッドにアクセスするために使われます。

3 メソッド ( bark )
  barkメソッドは、このクラスに属する犬が吠える動作を定義します。
  メソッド内では、犬の名前属性 (self.name) を利用して「ワンワン!」という擬音を組み合わせた文字列を生成し、返します。

★使い方
このクラスを用いて新しい犬オブジェクトを作成する際、 Dog(name='ポチ',age=10) のように名前と年齢を指定します。
作成した犬オブジェクトは、 name属性や age属性を通じて情報を取得したり、 barkメソッドを呼び出して吠える動作を実行できます。
このクラスは犬の情報(名前と年齢)を管理し、「ワンワン!」と吠える動作を実現するものです。

クラスとオブジェクトの関係の理解

クラスは設計図であり、オブジェクトはその設計図から作られた実物です。
例えば、「車」というクラスを作れば、そのクラスから「赤い車」「青い車」といったオブジェクトが作られます。
クラスの中では、データ(属性)と動作(メソッド)が一緒に管理されます。

クラスの継承

継承を使うと、既存のクラスを基にして新しいクラスを作ることができます。コードの再利用性を高めるために便利です。


実行結果 ↓


Dog は Animal を継承していて、speak メソッドを上書きしています。

ざっくりとは、こんな感じです。それでは、もう少し詳細に記載していきます。


オブジェクトとクラス

今まで様々な箇所で触れたように Python に含まれるものは 数値から 関数に至るまで 全てオブジェクトです。
オブジェクトはデータとコードの両方を含む カスタム データ構造であります。何らかの具体的なものの実例として インスタンスを表現します。
ちょっと表現が難しくなりました。要はオブジェクトは 実際のデータとコードが合体したものになります



ポイント