#13 Pythonで学ぶクラスの基本
データとそれに関する処理をひとまとめにする仕組みを「クラス」と呼びます。この記事では、Pythonにおけるクラスの基本的な使い方と、継承の書き方を解説します。
クラスを作ってみる
Pythonではclassというキーワードを使います。
class Person:
def __init__(self, name):
self.name = name
def greet(self):
print(f"こんにちは、{self.name}です")
__init__という特別な関数は、インスタンス(実体)を作った際に自動的に呼ばれる初期化処理です。
クラスからインスタンスを作る
person = Person("太郎")
person.greet() # こんにちは、太郎です
selfというお約束
Pythonのメソッドには、必ずselfという最初の引数を書く必要があります。これは「このインスタンス自身」を表す特別な引数です。
継承でクラスを拡張する
既存のクラスの機能を引き継ぎたい場合は、クラス名の後ろに親クラスをかっこで指定します。
class Student(Person):
def __init__(self, name, grade):
super().__init__(name)
self.grade = grade
def greet(self):
print(f"こんにちは、{self.grade}年生の{self.name}です")
student = Student("花子", 3)
student.greet() # こんにちは、3年生の花子です
super().__init__(name)は、親クラス(Person)の__init__を呼び出す書き方です。親クラスのメソッドを上書き(オーバーライド)して、独自の動作を定義することもできます。
クラスメソッドと静的メソッド
インスタンスを作らなくても呼び出せるメソッドを定義したい場合は、@staticmethodというデコレータを使います。
class MathUtils:
@staticmethod
def add(a, b):
return a + b
print(MathUtils.add(3, 5)) # 8
Pythonならではの注意点
selfは他の言語ではあまり明示的に書かない部分ですが、Pythonでは必ず書く決まりになっています。最初は「なぜ毎回selfを書くのか」と疑問に思うかもしれませんが、Pythonの設計上のお約束として覚えてしまいましょう。また、Pythonのクラスにはアクセス制限のキーワード(public・privateなど)が正式には存在せず、変数名の先頭にアンダースコアを付ける(_name)ことで「外部から触ってほしくない」という意図を慣習的に表現します。
まとめ
Pythonのクラスはclassで定義し、__init__で初期化、selfでインスタンス自身を扱います。super()による継承や@staticmethodも覚えておくと、応用も理解しやすくなります。
本ページはプロモーションを含みます。
参考書籍(PR)
Pythonをもっと学びたい方には「スッキリわかるPython入門 第2版」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿