1.結局なに

classは「設計図」
 オブジェクトの設計図
   どんなデータを持ち、
   どんな処理を持つかを決める
例
class User:
def __init__(self, name, points):
 self.name = name
 self.points = points

def add_points(self, value):
 self.points += value

ポイント
 User が設計図
 データ(name, points)を持つ
 処理(add_points)を持つ  
インスタンスは「実体」
 設計図から実体を作る
   設計図から実体を作ることで、
   実際に使える
設計図(User)から
 実体1(User1)と
 実体2(User2)を作る

例
 user1 = User(“Sato”, 1200)
 user2 = User(“Suzuki”, 800)

ポイント
 設計図から複数の実体を作れる
 それぞれ別のデータを持てる
__init__ は「最初の設定」
 インスタンスを作るときに
   自動で呼ばれるメソッド
 最初の値を受け取って、
   データを準備する
インスタンス作成の流れ
 User("Sato", 1200)を実行
 __init__ が自動で呼ばれる
 name と points に値をセット

例
 def __init__(self, name, points):
 self.name = name
 self.points = points

ポイント
 作成時に1回だけ実行
 受け取った値をselfに保存する 
 最初の準備係
selfは「自分自身」
 メソッドの中で、
   そのインスタンス自身を指す
   特別な引数
selfのイメージ

例
 user1.add_points(100)を実行
  メソッドの中は add_points
  メソッドを呼び出し
    self = user1
  user1のpointsが更新される

ポイント
 selfは自分自身を指す
 self.nameで自分のデータに
   アクセス
 自分のデータを変更できる
メソッドは「そのデータ用の関数」
 インスタンスが持つデータを
   使って処理する関数
メソッドを使う

例
 user1 = User("Sato", 1200)
 user1.add_points(150)
 print(user1.points)
   user1のpointsが150増える
   実行結果→ 1350

ポイント
 インスタンスのデータを使って処理
 何度でも呼び出せる
 状態(データ)を変えられる
class User:
 def __init__(self, name, points): 
  self.name = name
  self.points = points

 def add_points(self, value): 
  self.points += value
user1 = User("Sato", 1200)
user2 = User("Suzuki", 800)
def __init__(self, name, points):
    self.name = name
    self.points = points
 user1 = User("Sato", 1200) 
 user1.add_points(150) 
 print(user1.points)