
【6日でできるPython入門】クラス①
Pythonでは、クラスを使うことで自分だけの「型」を作ることができます。
今までint型やstr型、list型などの組み込み型を使ってきましたが、クラスを使えば「独自の設計図=型」を自由に作成できるようになります。クラスはデータと処理をまとめて一つに管理することができ、複雑なプログラムも整理しやすくなります。ここでは、クラスの基本構文と、インスタンスの作り方、属性・メソッドの扱い方をしっかり学びます。

1.クラスの基本構文とインスタンス化
1.1. クラスの定義とインスタンス化
クラスはclass
キーワードで定義します。
ファイル名: lesson20-1.py
class Animal:
pass # まだ中身は未定
dog = Animal()
cat = Animal()
print(type(dog))
print(type(cat))
実行結果
<class '__main__.Animal'>
<class '__main__.Animal'>
解説
class Animal:
で新しい型を作成します。pass
は「何もしない」ダミー命令で、中身を後で追加する場合によく使います。dog = Animal()
でインスタンス化し、独立したデータが作られます。
1.2. __init__メソッドによる初期化
インスタンス化の際に値を渡し、属性をセットできます。
ファイル名: lesson20-2.py
class Animal:
def __init__(self, name, sound):
self.name = name # インスタンス属性
self.sound = sound
tiger = Animal("トラ", "ガオー")
print(f"{tiger.name}は「{tiger.sound}」と鳴きます。")
実行結果
トラは「ガオー」と鳴きます。
解説
__init__
は「イニシャライザ」と呼ばれ、インスタンス作成時に自動で実行される特別なメソッドです。self.name
やself.sound
のように、「そのインスタンス固有の属性」を設定できます。
2.メソッド・属性・self
2.1. インスタンスメソッドの定義と呼び出し
クラスの中で関数を定義すると「メソッド」になります。
メソッドは「インスタンス.メソッド名()」で呼び出します。
ファイル名: lesson20-3.py
class Animal:
def __init__(self, name, sound):
self.name = name
self.sound = sound
def greet(self):
print(f"こんにちは、私は{self.name}です。")
def speak(self):
print(f"{self.sound}!と鳴きます。")
panda = Animal("パンダ", "フンフン")
panda.greet()
panda.speak()
実行結果
こんにちは、私はパンダです。
フンフン!と鳴きます。
解説
- メソッドの第1引数は必ず
self
です(インスタンス自身を指します)。 - インスタンス属性(nameやsound)は
self.属性名
でアクセスします。
2.2. インスタンス属性の変更と動作
インスタンスごとに属性値を変更できます。
ファイル名: lesson20-4.py
class Animal:
def __init__(self, name, sound):
self.name = name
self.sound = sound
def greet(self):
print(f"こんにちは、私は{self.name}です。")
def speak(self):
print(f"{self.sound}!と鳴きます。")
elephant = Animal("ゾウ", "パオーン")
elephant.speak()
elephant.sound = "バオーン" # 属性を書き換え
elephant.speak()
実行結果
パオーン!と鳴きます。
バオーン!と鳴きます。
解説
- インスタンス属性は「インスタンス.属性名 = 値」でいつでも変更可能です。
- 属性を変更すれば、同じメソッドでも違う動作になります。
3.クラスの利用とまとめ表
3.1. インスタンスを複数作って管理する
ファイル名: lesson20-5.py
class Animal:
def __init__(self, name, sound):
self.name = name
self.sound = sound
def greet(self):
print(f"こんにちは、私は{self.name}です。")
def speak(self):
print(f"{self.sound}!と鳴きます。")
animals = [
Animal("イヌ", "ワンワン"),
Animal("ネコ", "ニャー"),
Animal("カエル", "ゲロゲロ")
]
for a in animals:
a.greet()
a.speak()
実行結果
こんにちは、私はイヌです。
ワンワン!と鳴きます。
こんにちは、私はネコです。
ニャー!と鳴きます。
こんにちは、私はカエルです。
ゲロゲロ!と鳴きます。
3.2. クラスとインスタンスの用語まとめ
用語 | 概要 | 例 |
---|---|---|
クラス | 設計図。新しい型(データの型・動作)を定義 | class Animal: ... |
インスタンス | クラスから作成される実体 | dog = Animal() |
属性 | インスタンスごとに持つ値(データ) | self.name, self.sound |
メソッド | インスタンス専用の関数。selfを最初の引数に持つ | def greet(self): ... |
インスタンス化 | クラスからインスタンス(実体)を作る操作 | tiger = Animal("トラ", "ガオー") |
ここでは、クラスの基本とインスタンス、属性、メソッドの仕組みを学びました。
次は、クラスを使ったより高度な設計やカスタマイズについて学んでいきます。