1.クラス(class)とは?
クラスとは、オブジェクト(物・キャラクター・データ)の設計図 です。
オブジェクトとはクラスから作られる “実体(インスタンス)” のことです。
2.クラスの最小形
class Person:
pass
pass は「何もしない」の意味。
3.インスタンス(実体)を作る
p = Person()
Person() を呼ぶと「Person のインスタンス」ができます。
4.クラスに属性(データ)を持たせる:init
クラスで一番重要なのが init(コンストラクタ) です。
インスタンスが作られた時に自動で実行されます。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("Alice", 20)
print(p.name)
print(p.age)
self.xxx = xxx は「インスタンス自身のデータ」を作って保存しているという意味です。
5.メソッド(クラスに所属する関数)
インスタンスの動き=クラスに所属する関数=メソッドを定義します。
このクラスは何ができますか?ということを関数で定義。
class Person:
def __init__(self, name):
self.name = name
def hello(self):
print(f"こんにちは、{self.name} さん")
p = Person("Bob")
p.hello()
※ クラスの中の関数は第一引数に self が必須(インスタンス自身を表す)
6.クラスと「設計図 → オブジェクト」の関係
例えば「犬」というクラスは「名前、年齢」といった属性を持ち、「吠える」という動作メソッドができる。これを具体的に「ポチ、5歳」などの犬にすることをインスタンスという。
7.クラスの応用:継承(inheritance)
あるクラスの機能を別のクラスに引き継ぐ 仕組みです。
✔ 親クラス(基底クラス)
class Animal:
def sound(self):
print("何かが鳴いている")
✔ 子クラス(Animal を継承)
class Dog(Animal):
def sound(self):
print("ワンワン!")
d = Dog()
d.sound() # ワンワン!
- Dog は Animal の機能を持っている
- 自分で上書き(オーバーライド)もできる
8.まとめて動く実例
車のクラスを作ってみる。
車の属性は「色」と「スピード」にする。
車の動作は「アクセル(accelerate)」と「ブレーキ(brake)」にする。
「アクセル(accelerate)」は加速する速度を入力することで、もともとのスピードに加算される。「ブレーキ(brake)」はスピードを完全に0にする。
class Car:
def __init__(self, color, speed=0):
self.color = color
self.speed = speed
def accelerate(self, amount):
self.speed += amount
print(f"現在の速度: {self.speed}")
def brake(self):
self.speed = 0
print("停止しました")
# インスタンスを作る
my_car = Car("red")
my_car.accelerate(30)
my_car.brake()
