Python(パイソン) ,ソースプログラムリスト あり ,プログラム作ってみた ,[別のモジュールへ、複数の値をまとめて渡す、クラスを使って]

Python(パイソン) プログラム作ってみた インデックス へ

2024.8.18 presented in [note] ( //note.com/runningWater/ )
2024.8.24 rewritten

----------
1 はじめに

これ以降に記述されている内容は、このようなコンピューター・プログラムを制作した、というような事を、ただ、述べているに過ぎない。

以下の記述を読んだ人が、それを単に参考にする、というのであれば、問題は無いと、思われる。

しかし、記述されている内容に沿って、その人が、そこに記されているのと同様の制作や作業を行った際に、その制作、作業、コンピューターの作動の結果、使用されたコンピューター等、様々な方面において、何らかの問題が発生しない、という保証は、全くない。

その制作、作業、コンピューターの作動の結果、その人や、その人が所属している組織、その人が使用した様々な機器、インフラストラクチャー等の、身の上にどのような事が起ころうとも、私は一切、責任を負わない。

このプログラムは、Python(パイソン) 言語を使って、記述されている。

----------
2 どんなものを作ったのか
 
あるモジュールから、別のモジュールの中にある関数を呼び出す際に、多くのデータを手渡して行いたい、というような事は、よくある事だと思う。

そのような時には、それぞれのデータを、関数呼び出しの引数に指定し、というような方法をとるのが、一般的だろうと思うが、そのデータの個数が多くなると、関数呼び出しの記述量が増えてしまい、といったような問題が起こるのでは、と、思った。

そこで、その問題を回避するために、以下の例にあるように、クラスを用いて、関数呼び出しを行う、という方法を、ためしにやってみた。

----------
3 プログラムの内容

下記にあるような、3個のモジュールを、作ってみた。

[ModuleA] は、[クラス DataToBeHandedOver] に属するインタンスの上に、値を盛って、[ModuleB] にそれを手渡しながら、関数のコールを行う、というようなかたちになっている。

===============
ファイル名 [ModuleA.py]

import DataToBeHandedOver
import ModuleB

# -------------------------------
MODULE_NAME = "ModuleA"

function_name = "process_start"

print ( "--------------------------------" )
print ( "Enter into, module = " + MODULE_NAME + " , function = "  \
                   + function_name )
print ( "--------------------------------" )

      # construct a instance of Class DataToBeHandedOver
ins_DataToBeHandedOver = DataToBeHandedOver  \
                            .DataToBeHandedOver ( )
      # set value into the instance
ins_DataToBeHandedOver.iv_value_1 = "value of iv_value_1"
ins_DataToBeHandedOver.iv_value_2 = "value of iv_value_2"
ins_DataToBeHandedOver.iv_value_3 = "value of iv_value_3"
      # call function of ModuleB, handing over above values
ModuleB   \
    .process_1 ( ins_DataToBeHandedOver )

----------
===============
ファイル名 [DataToBeHandedOver.py]

----------

class DataToBeHandedOver :

    CV_CLASS_NAME = "DataToBeHandedOver"

    #------------------------------------------------------------
        # definition of constructer
    def __init__( self  ) :

        methode_name = "constructer"

        self.iv_value_1 = " "
        self.iv_value_2 = " "
        self.iv_value_3 = " "

----------

===============
ファイル名 [ModuleB.py]

----------


MODULE_NAME = "ModuleB"

def process_1 ( arg_ins_DataToBeHandedOver ) :

    function_name = "process_1"

    print ( "--------------------------------" )
    print ( "Enter into, module = " + MODULE_NAME + " , function = "  \
                   + function_name )
    print ( "--------------------------------" )

    print ( "arg_ins_DataToBeHandedOver.iv_value_1 = " \
                   + arg_ins_DataToBeHandedOver.iv_value_1 )
    print ( "arg_ins_DataToBeHandedOver.iv_value_2 = " \
                   + arg_ins_DataToBeHandedOver.iv_value_2 )
    print ( "arg_ins_DataToBeHandedOver.iv_value_3 = " \
                   + arg_ins_DataToBeHandedOver.iv_value_3 )

----------
[ModuleA] を起動してみたら、以下のように、表示されたので、どうやら、データの引き渡しが、適切に行われているようだ。


Enter into, module = ModuleA , function = process_start


Enter into, module = ModuleB , function = process_1

arg_ins_DataToBeHandedOver.iv_value_1 = value of iv_value_1
arg_ins_DataToBeHandedOver.iv_value_2 = value of iv_value_2
arg_ins_DataToBeHandedOver.iv_value_3 = value of iv_value_3

----------

Python(パイソン) プログラム作ってみた インデックス へ

この記事が気に入ったらサポートをしてみませんか?