最後にモジュールのインポート方法について確認しておきましょう.まず,issue.py には次のように main( )
モジュールも記述しておきます.
issue.py
class Issue:
def __init__(self, subject):
self.subject = subject
self.description = ''
self.priority = 0
self.closed = False
def is_closed(self):
return self.closed
def close(self):
self.closed = True
def main():
issue1 = Issue('件名です')
issue1.description = '問題の詳細です'
issue1.priority = 1
issue1.close()
print('subject :', issue1.subject)
print('description :', issue1.description)
print('priority :',issue1.priority)
print('closed :', issue1.is_closed())
if __name__ == '__main__':
main()
これまでは,issue.py を次のような方法でインポートして,Issue クラスのインスタンスを作成してきました.つまり,issue.py から Issue モジュールをインポートしているので,Issue( )
でインスタンスの作成ができるわけです.
from issue import Issue
issue1 = Issue('2nd Issue')
print(issue1.subject)
2nd Issue
Issue モジュールをインポートしているだけですから,issue.py にある main( )
モジュールを呼び出すことはできません.なお,以降の操作は Jupyter Notebook や Jupyter Lab を利用しているときにはカーネルを再起動してから実行してください.
# Jupyter notebook の場合はその都度カーネルの再起動を行ってください.
from issue import Issue
main()
-------------------------------------------- NameError Traceback (most recent call last) NameError: name 'main' is not defined
次のように入力すると,issue.py から main モジュールをインポートしていることになります.よって main( )
を実行することが可能です.
# Jupyter notebook の場合はその都度カーネルの再起動を行ってください.
from issue import main
main()
subject : 件名です description : 問題の詳細です priority : 1 closed : True
issue.py から main モジュールをインポートしているので,Issue クラスのインスタンスは作成できません.
# Jupyter notebook の場合はその都度カーネルの再起動を行ってください.
from issue import main
issue1 = Issue('2nd Issue')
-------------------------------------------- NameError Traceback (most recent call last) NameError: name 'Issue' is not defined
この書き方は非推奨ですが,issue.py にあるすべてのモジュールをインポートすることもできます.この方法が推奨されない理由は,他のモジュールと名前が重複したときに意図しないモジュールが呼び出されてしまう可能性があるためです.
# Jupyter notebook の場合はその都度カーネルの再起動を行ってください.
from issue import *
main()
print('-------')
issue1 = Issue("importの確認")
print(issue1.subject)
subject : 件名です description : 問題の詳細です priority : 1 closed : True ------- importの確認
次の方法でインポートすると,常に issue.
を指定する必要があります.
# Jupyter notebook の場合はその都度カーネルの再起動を行ってください.
import issue
issue.main()
print('-------')
issue1 = issue.Issue("importの確認")
print(issue1.subject)
subject : 件名です description : 問題の詳細です priority : 1 closed : True ------- importの確認
毎回 issue.
を入力するのが面倒なら as
省略名を指定して呼び出すことも可能です.これは import numpy as np
や import pandas as pd
,import tensorflow as tf
などで多用されている方法です.
# Jupyter notebook の場合はその都度カーネルの再起動を行ってください.
import issue as iss
iss.main()
print('-------')
issue = iss.Issue("importの確認")
print(issue.subject)
subject : 件名です description : 問題の詳細です priority : 1 closed : True ------- importの確認