Python入門トップページ


目次

  1. プログラミング言語
  2. Anaconda - Jupyter Notebook / JupyterLab の環境設定
  3. Python の基礎
  4. リスト,タプル,辞書,集合
  5. 再び Jupyter Notebook の操作
  6. Python の制御構文
  7. 関数
  8. 便利な関数など
  9. リストの内包表記
  10. 多次元リスト
  11. クラス
    1. クラスの定義とインスタンス化
    2. クラスの初期化
    3. 属性の変更
    4. メソッドの定義(ゲットメソッド)
    5. メソッドの定義(セットメソッド)
    6. メインモジュール
    7. クラスのインポート
    8. クラスの属性を取り出す
    9. クラスの属性値を取り出す
    10. クラスの属性と値を辞書形式で得る
    11. クラスの属性を削除する
    12. モジュールのサーチパス
    13. 様々なインポート方法
  12. 演習問題
  13. 雑多な情報

Python の基礎

クラス

クラスのインポート

ここでは,作成したクラスを外部ファイルとして別のメインプログラムから呼び出す例を示します.まず,前のページで作成した内容を issue.py というファイル名で作成しメインのプログラムと同じフォルダに設置します.

issue.pyclass 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.pyclass 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 で実行している場合,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 : メモ

目次に戻る