ここでは,作成したクラスを外部ファイルとして別のメインプログラムから呼び出す例を示します.まず,前のページで作成した内容を issue.py というファイル名で作成しメインのプログラムと同じフォルダに設置します.
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
と同じフォルダにメインのプログラムのファイルを作成し,次の内容を記述します.ここで,from issue import Issue
は issue.py というファイルを探し(どのフォルダから探すかのルールは後述),Issue というモジュールをインポート(呼び出せるように)することを意味しています.これにより,Issue('2nd Issue')
のようにインスタンスを作成できるようになります.
from issue import Issue
issue1 = Issue('2nd Issue')
issue1.description = 'new problem'
issue1.priority = 3
issue1.memo = 'メモ'
print('subject :', issue1.subject)
print('description :', issue1.description)
print('priority :',issue1.priority)
print('closed :', issue1.is_closed())
print('memo :', issue1.memo)
subject : 2nd Issue description : new problem priority : 3 closed : False memo : メモ
このとき,issue.py 内部にある main()
モジュールは実行されないことに注意してください.
なお,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
なお,Jupyter notebook や Jupyter Lab で実行している場合,issue.py を変更した後にはカーネルを再起動してください(再起動しないと変更が読み込まれません).
from issue import Issue
issue1 = Issue('2nd Issue')
issue1.description = 'new problem'
issue1.priority = 3
issue1.memo = 'メモ'
print('subject :', issue1.subject)
print('description :', issue1.description)
print('priority :',issue1.priority)
print('closed :', issue1.is_closed())
print('memo :', issue1.memo)
subject : 2nd Issue description : new problem priority : 3 closed : False memo : メモ