import
importは「import モジュール名(ファイル名)
」と記述することで、Pythonではコードの一部を別ファイルに移して、モジュールとして読み込むことができます。
importやモジュールについての参考記事url : https://qiita.com/ITdiary/items/daff5591e9b420a5055a
今回は前回の記事に追加でimportの説明をしたいと思います。
「from モジュール名 import クラス名
」と記述することで、そのモジュール内の指定したクラスを直接読み込むことができます。
これを用いることで、下記の例ではscript.py内でもこれまでと同じ様にNumberクラスを用いることができます
from utils import Number # 「from モジュール名 import クラス名」
valid = validate(1) # 前回import モジュール名の時は「モジュール名.関数名()」なので、utils.validate()と書く必要があった
print(valid)
class Number
def validate(hand):
if hand < 0 or hand > 2:
return False
else:
return True
実践例
from utils import FruitMenu
fruit_menu1 = FruitMenu('りんご', 300)
fruit_menu2 = FruitMenu('みかん', 250)
fruit_menu3 = FruitMenu('バナナ', 200)
fruit_menus = [fruit_menu1, fruit_menu2, fruit_menu3]
for menu in fruit_menus:
print(menu.fruit_info())
class FruitMenu:
def __init__(self, name, price):
self.name = name
self.price = price
def fruit_info(self):
return self.name + ':' + str(self.price) + '円です'
りんご:300円です
みかん:250円です
バナナ:200円です
上記の流れとしては、まずインスタンス生成後にインスタンス変数name
とprice
に値を自動で代入させるために__init__メソッドを用いました。
それらを変数fruit_menu1~3
にそれぞれ代入し、リストfruit_menus
にまとめました。
そして、for文を用いてリストの要素を1つずつ取り出し、変数menu
に入れて処理を行います。
from utils import FruitMenu
と記述しているのでfor文の処理で関数fruit_info()
を呼び出すことができ、utils.pyファイル内の関数fruit_info()
内の処理を実行させます。処理には先程自動で値を代入した変数name
とprice
を用いて、出力させたい内容を記述し、returnを用いて戻り値として呼び出し元に返します。ここで注意なのは、price
は数値なので文字列に変える必要があります。
そして、呼び出し元であるprint(menu.fruit_info())
に返され、print()で出力されることで上記のように出力結果を得ることが出きます。