導入
クラスは「データ(属性)」と「そのデータを扱う処理(メソッド)」をひとまとめにした設計図です。設計図から作った実体を**インスタンス(オブジェクト)**と呼びます。
説明
class で定義します。__init__ はインスタンスを作るときに呼ばれる特別なメソッドで、self を通して属性を用意します。
class Dog:
def __init__(self, name, age):
self.name = name # 属性を用意
self.age = age
def bark(self): # メソッド(self が自分自身)
return f"{self.name}: ワン!"
pochi = Dog("ポチ", 3) # インスタンスを作る
print(pochi.name) # ポチ(属性を参照)
print(pochi.bark()) # ポチ: ワン!(メソッドを呼ぶ)
self は「そのインスタンス自身」を指します。メソッドの中では self.属性 で自分のデータにアクセスします。同じクラス(設計図)から、別々のデータを持つインスタンス(実体)をいくつも作れます。
flowchart TB cls["設計図 class Dog<br/>属性: name, age / メソッド: bark()"] cls -->|"Dog(シロ, 5)"| a["インスタンス a<br/>name=シロ"] cls -->|"Dog(クロ, 1)"| b["インスタンス b<br/>name=クロ"]
a = Dog("シロ", 5)
b = Dog("クロ", 1)
print(a.bark())
print(b.bark())
やってみよう
Dog のインスタンスを増やしたり、bark の返す文を変えたりして、動きを確かめましょう。
演習
name と price を属性に持つクラス Item を定義し、info メソッドで 商品名: りんご / 150円 の形の文字列を返すようにして、Item("りんご", 150).info() を表示してください。
ヒント1を見る
__init__(self, name, price) で属性を作り、def info(self): return f"商品名: {self.name} / {self.price}円"。