解析エンジニアの自動化 blog

コツコツと自動化した方法を残す blog

Python のソースコードを分割する



こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。


この記事の目次



背景・目的


Python でコードを書いているときに、クラス毎や関数毎にファイルが分割出来たら良いなと思いました。
クラス毎や関数毎に分担する事も出来そうですし…

ファイルが分割出来ると1度作ったソースコードの流用がとても簡単になり、ソースコードを資産的に管理する事が出来る様になります。

なので、ファイル分割の方法をまとめます。



動作環境


Windows 7
・winpython 64bit 3.4.4



プログラム

ソースコードは以下の2つを用意します。
関数とクラスのファイル:split_files_child.py
関数とクラスの実行ファイル:split_files.py

ソースコード 〜関数とクラスのファイル〜


###############################################################################
# サンプル関数・クラスファイル
###############################################################################
 
# 関数 1
def sample_function1():
    print('split_files_child.py の sample_function1 が実行されました。')
 
# 関数 2
def sample_function2():
    print('split_files_child.py の sample_function2 が実行されました。')
 
# クラス
class samplclass():
   
    # コンストラクタ
    def __init__(self, arg1):
        self.value = arg1
   
    # メソッド
    def method1(self):
        self.value = '\n' + self.value + '\nsampleclass の method1 によって追加された文章!!'



ソースコード 〜別ファイルの関数とクラスの実行ファイル〜


###############################################################################
# 分割されているソースコードファイルの実行プログラム
###############################################################################
 
# ファイルインポート
import split_files_child as sfc # .py は不要
 
# split_files_child.py の sample_function1 を実行
sfc.sample_function1()
 
# split_files_child.py の sample_function1 を実行
sfc.sample_function2()
 
# split_files_child.py の sampleclass のインスタンス生成
# 'split_files.py' で初期化
myclass = sfc.samplclass('split_files.py')
 
# value の表示
print(myclass.value)
 
# split_files_child.py の sampleclass のメソッド実行
myclass.method1()
 
# value の表示
print(myclass.value)



結果

かなり簡単に分割出来ました。

関数とクラスのファイルを実行ファイルと同じディレクトリに置いて、 import しただけです。


In [1]: runfile('C:/WinPython-64bit-3.4.4.6Qt5/settings/.spyder-py3/split_files.py', wdir='C:/WinPython-64bit-3.4.4.6Qt5/settings/.spyder-py3')
Reloaded modules: split_files_child
split_files_child.py の sample_function1 が実行されました。
split_files_child.py の sample_function2 が実行されました。
split_files.py
 
split_files.py
sampleclass の method1 によって追加された文章!!



コメント

インターネットを調べているとクラスだけ書かれているサイトを見かけたりします。

こうやって使えば良かったんですね。

これで、コーディング時間が削減できたら良いですね。

あまり視覚的では無いので読みづらい記事になってしまった…



以上