Python基礎④

Pythonの基礎知識④です。
引き続き自分の勉強メモです。
過度な期待はしないでください。

過去投稿記事
-
[Python基礎](https://qiita.com/k-yasuhiro/items/c31b6370023e67e00aa9)
[Python基礎②](https://qiita.com/k-yasuhiro/items/d8ed3e4093dd47faf40e)
[Python基礎③](https://qiita.com/k-yasuhiro/items/7e83552c58f854bd715f)
[Python基礎⑤](https://qiita.com/k-yasuhiro/items/0eff0469eb3a5e95980e)
<br>

クラスの定義
-
　-「もの」を生成する仕組み
　その「もの」を生成するには、まずその「設計図」を用意する必要がある。
　その設計図のことを`クラス`、
　「もの」のことを`インスタンス`と呼ぶ。
<br>

インスタンスを生成する
-
1、「クラスを用意する」
　- クラスは`「class クラス名:」`で定義

```.py:例
class Vehicletype: # 行末にコロンは必須
    pass # 何も処理がない事を表す
    # インデントを揃える（半角スペース４つ分）
```
<br>

2、「クラスからインスタンスを生成」
　-`「クラス名()」`と`そのクラスを呼び出すこと`で、
　クラスを用いて新しくインスタンスを生成することが出来る。
　そして、`「変数名 = クラス名()」`とすることで、生成したインスタンスを変数に代入することが出来る。

```.py:例
class Vehicletype: # 行末にコロンは必須
    pass # 何も処理がない事を表す
    # インデントを揃える（半角スペース４つ分）

vehicle_type1 = Vehicletype()
               # Vehicletypeクラスからインスタンスを生成
```
<br>

3、インスタンスに情報を追加

 -「vehicle_type1.name = 'トラック'」とすることで、menu_item1に
　「name」が「トラック」であるという情報を追加することが出来る。
　この時、「name」のことを`「インスタンス変数」`と呼ぶ。

```.py:例
class Vehicletype: # 行末にコロンは必須
    pass # 何も処理がない事を表す
    # インデントを揃える（半角スペース４つ分）

vehicle_type1 = Vehicletype()
               # Vehicletypeクラスからインスタンスを生成
vehicle_type1.name = 'トラック'

print(vehicle_type1.name) 
# 出力結果 →　トラック


vehicle_type2 = Vehicletype()
               # Vehicletypeクラスからインスタンスを生成
vehicle_type2.name = 'バス'

print(vehicle_type2.name) 
# 出力結果 →　バス
```
<br>

クラスの中に処理を追加
-
　-クラスの中では関数を定義することが出来る。
　クラスの中で定義した関数のことを`メソッド`と呼ぶ。

　-メソッドの定義の方法
　`第1引数にselfを追加する`必要がある

```.py:例
class Vehicletype: 
    def hello(self): # 第1引数にselfを追加
    # インデントを揃える（半角スペース４つ分）
      print('こんにちは')
```
<br>
　-クラスの中で定義したメソッドを呼び出す
　`「インスタンス.メソッド名()」`とすることで、そのメソッドを呼び出すことが出来る

```.py:例
class Vehicletype: 
    def hello(self): # 第1引数にselfを追加
    # インデントを揃える（半角スペース４つ分）
        print('こんにちは')
        # インデントを揃える（半角スペース４つ分）

vehicle_type1 = Vehicletype()
               # Vehicletypeクラスからインスタンスを生成
vehicle_type1.hello()

# 出力結果 →　こんにちは
```
<br>

インスタンスメソッド
-
　-インスタンスメソッドの第1引数に指定した「self」には、そのメソッドを呼び出したインスタンス自身が代入されている。
　そのため、「self.name」とすることで、そのメソッドを呼び出している「vehicle_type1」の「name」の値を取得することが出来る。

```.py:例
class Vehicletype:
    def info(self): # selfにvehicle_type1が代入されている
        print(self.name)

vehicle_type1 = Vehicletype()
vehicle_type1.name = 'トラック'

vehicle_type1.info 
# 出力結果 →　トラック
```
<br>

　-「return」を使って戻り値として返すことが出来る

```.py:例
class Vehicletype:
    def info(self): # selfにvehicle_type1が代入されている
        return self.name

vehicle_type1 = Vehicletype()
vehicle_type1.name = 'トラック'

print(vehicle_type1.info )
# 出力結果 →　トラック
```
<br>

　-インスタンスメソッド（引数）

```.py:例
class Vehicletype:
    def info(self, count): # countに「4」が代入される、「self」の分だけ引数の順番がずれる

vehicle_type1 = Vehicletype()
vehicle_type1.name = 'トラック'

vehicle_type1.info(4)
```
<br>

　-`__init__メソッド`
　`__init__メソッド`は、「クラス名()」でインスタンスを生成した直後に自動で呼び出されるメソッド。

```.py:例
class Vehicletype:
    def __init__(self):
        print('車種をお選びください')

vehicle_type1 = Vehicletype()
                # インスタンスが生成されたので__init__メソッドが自動で呼び出される

# 出力結果 →　車種をお選びください
```
<br>
　-`__init__メソッド`（値を代入）
　インスタンスを生成すると同時にインスタンス変数に値を代入することが出来る。

```.py:例
class Vehicletype:
    def __init__(self):
        self.name = 'トラック'

vehicle_type1 = Vehicletype()
                # インスタンスが生成されたので__init__メソッドが自動で呼び出される

print(vehicle_type1.name)
# 出力結果 →　トラック
```
<br>

-`__init__メソッド`（引数）
　インスタンスメソッドと同じように、引数を受け取ることも出来る。

```.py:例
class Vehicletype:
    def __init__(self, name):
        self.name = name

vehicle_type1 = Vehicletype('トラック')
                # インスタンスが生成されたので__init__メソッドが自動で呼び出される

print(vehicle_type1.name)
# 出力結果 →　トラック
```
<br>