はじめに
あけましておめでとうございます。株式会社グラディート 新人の佐藤です。
かなり需要の低いっぽい本連載ですが、これからもPythonの基礎に触れていく記事を作ってまいります!
今回は、「データ(属性)」と「処理(メソッド)」を一つのパッケージ(オブジェクト)として扱う方法である、クラスについて学習していきます。
なぜクラスの理解が重要なのか
クラスを理解することで、以下のような利点があります。
- 整理整頓: 関連する変数と関数を一つにまとめることができ、コードの見通しが良くなります。
- 再利用性: 一度定義したクラス(設計図)から、複数のオブジェクト(実体)を簡単に生成できます。
- 拡張性: 既存の機能をベースに新しい機能を追加する「継承」という仕組みが使えます。
クラスの概念:設計図と実体
クラスを理解する上で最も一般的な例えが「設計図」と「製品」です。
設計図(クラス)とインスタンス
- クラス (Class): オブジェクトの構造や挙動を定義した「設計図」です。
- インスタンス (Instance): 設計図に基づいて実際にメモリ上に作られた「実体(オブジェクト)」です。
例えば、「車」というクラス(設計図)があれば、そこから「赤いTOYOTEの車」や「青いHONDEの車」といった個別のインスタンス(実体)を作ることができます。
クラスの定義とコンストラクタ
Pythonでクラスを定義する基本構文を見ていきましょう。
基本構文
クラス名は慣習として、単語の頭文字を大文字にするCapWords形式(例: MyClass)で記述します。
class Robot:
"""ロボットを表すクラス"""
pass
インスタンスの生成
my_robot = Robot()
コンストラクタ __init__
インスタンスが生成された直後に自動的に呼び出される特殊なメソッドをコンストラクタと呼びます。主にインスタンスの初期状態(属性)を設定するために使われます。
class Robot:
def __init__(self, name, version):
self.name = name # インスタンス変数(属性)
self.version = version
self の役割
クラス内のメソッドを定義する場合、必ず第一引数に self を定義する必要があります。 self は「そのインスタンス自身」を指す変数です。これがあることで、インスタンスごとに異なるデータ(名前やバージョンなど)を保持し、アクセスすることが可能になります。
メソッドと属性
クラスの中にある変数を属性(インスタンス変数)、関数をメソッドと呼びます。
メソッドの定義と呼び出し
メソッドは、そのオブジェクトができる「振る舞い」を定義します。
class Robot:
def __init__(self, name, version):
self.name = name
self.version = version
def say_hello(self):
"""挨拶をするメソッド"""
print(f"私は{self.name}です。バージョンは{self.version}です。")
インスタンス化
robo1 = Robot("R2-D2", "v1.0")
メソッドの実行
robo1.say_hello()
メソッド内でインスタンス変数にアクセスする際も、必ず self.変数名 と記述する必要があります。
クラスの継承(初歩)
継承(Inheritance) とは、既存のクラス(親クラス)の機能をベースにして、新しいクラス(子クラス)を作成する仕組みです。
# 親クラス
class Animal:
def speak(self):
print("音を出します")
# 子クラス(Animalを継承)
class Dog(Animal):
def speak(self):
# 親クラスのメソッドを上書き(オーバーライド)
print("ワンワン!")
my_dog = Dog()
my_dog.speak() # 出力: ワンワン!
継承を使うことで、共通の機能は親クラスにまとめ、特定の機能だけを子クラスで書き換える(オーバーライドする)といった効率的な開発が可能になります。
まとめ
Day 6の学習内容の振り返り
Day 6では、Pythonにおけるオブジェクト指向の入り口である「クラス」を学びました。
- クラス: オブジェクトの設計図。
- インスタンス: 設計図から作られた実体。
-
__init__: 初期化を行うコンストラクタ。 - self: インスタンス自身を指す、メソッドの必須第一引数。
- 継承: 既存のクラスを再利用して新しいクラスを作る仕組み。
相変わらず基礎の基礎を学習していく本連載ですが、PHP出の身からするとコンストラクタの記法の違いにびっくりです!
ようやくではありますが、Pythonの試験本を購入したので、次回以降はそれを加味した内容でお送りできればと思います!
安心安全のホワイト高還元SESに転職を考えている方へ
新しい挑戦に踏み出すことは、人生において重要な一歩です。 転職活動は自分自身を知り、成長する貴重な機会でもあり、夢や成長を追求するためには必要な要素の一つ になるかと思います。 どんな選択をされるにせよ、その決断があなたに取って素晴らしい未来を切り開くことを願っています! グラディートと一緒に誇れるエンジニアを目指しましょう!
■『株式会社グラディート』では受託開発・SES・ブランディングデザイン・事業コンサルティングなどを事業として行う都内のIT企業です。現在、不遇な待遇で困っているエンジニアさんは、ぜひ一度グラディートに相談してみてね!(年収査定・SESへの転職相談も承っております!)
株式会社グラディート採用情報はこちら▼
https://en-gage.net/gradito/
株式会社グラディート公式サイトはこちら▼
https://www.gradito.co.jp/