未来電子テクノロジーでインターンをしている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 ⅳ