2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

python:インスタンスメソッド

Last updated at Posted at 2019-10-29

未来電子テクノロジーでインターンをしているrRanです。
プログラミング初心者であるため、内容に誤りがあるかもしれません。
もし、誤りがあれば修正するのでどんどん指摘してください。

確認: インスタンスメソッドとは

pythonのクラスの中で定義した関数のことです。

第一引数 self

クラスの中では関数を定義できます。
この、クラスの中で定義した関数のことをメソッドと呼びます。
メソッドの定義では、以下のように第一引数にselfを追加する必要があることに注意です!
def hello(self):
このselfには、インスタンス自身が代入されています。

このメソッドを呼び出す記載方法は、
インスタンス名.メソッド名()
です。
インスタンスが変数に代入されている場合は、変数.メソッド名()になります☺︎

printとreturnの運用方法の違い

printの場合

def内でprintとしていれば、menu_item1.info()のようにそのまま使用できます。

class MenuItem:
    def info(self):
        print(self.name + ': ' + str(self.price))

menu_item1 = MenuItem()
menu_item1.name = 'サンドイッチ'
menu_item1.price = 500

# menu_item1.info()の値を出力してください
menu_item1.info()
menu_item2 = MenuItem()
menu_item2.name = 'チョコケーキ'
menu_item2.price = 400

# menu_item2.info()の値を出力してください
menu_item2.info()

returnの場合

def内でreturnとしていると、print(menu_item1.info())のように、出力しなければなりません。

class MenuItem:
    def info(self):
        # print()の中身を戻り値として返してください
        return self.name + ': ' + str(self.price)


menu_item1 = MenuItem()
menu_item1.name = 'サンドイッチ'
menu_item1.price = 500

# menu_item1.info()の値を出力してください
print(menu_item1.info())
menu_item2 = MenuItem()
menu_item2.name = 'チョコケーキ'
menu_item2.price = 400

# menu_item2.info()の値を出力してください
print(menu_item2.info())

特殊なインスタンスメソッド_init_

_init_メソッドは、クラス名()でインスタンスを生成した直後に自動的で呼び出されるものです。
これをすれば、インスタンスの生成と同時に、インスタンスに値が代入できます。pythonでのメニュー作成方法のStep2,3が同時にできるということです。

つまり通常以下のように書かなければいけなかったところを、

menu_item1 = MenuItem()
menu_item1.name = 'サンドイッチ'
menu_item1.price = 500

defの部分を_init_メソッドを使って以下のように書くことで、

    def __init__(self):
        self.name = 'サンドイッチ'
        self.price = 500

menu_item1.name = 'サンドイッチ'menu_item1.price = 500
が省けるということです!

こちらの方が関連のある情報がまとまっていて、わかりやすいですね😊

また、_init_メソッドに引数を渡すことで、値のバリュエーションを増やせます。
詳しくいうと、

    def __init__(self):
        self.name = 'サンドイッチ'
        self.price = 500

このように具体的な数値を代入するのではなく、

    def __init__(self, name, price):
        self.name = name
        self.price = price

とするということです。

参照

・progate python ⅳ

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?