python クラス変数を利用し csvデータを読み込む outputフォルダを作成する  

クラス変数とは
クラス変数とは、すべてのインスタンス間で共通した値をもつ変数です。
クラス変数は、クラス内に定義することで作成できます。

インスタンス変数は、個々のインスタンスに格納される変数のことです

https://aiacademy.jp/media/?p=922

```
class User:
    # 実行順
    def __init__(self, name): # インスタンス化されて渡ってくる値を受ける変数を定義します
        # インスタンス変数（属性の初期化）
        self.name = name 
        print("コンストラクタが呼ばれました")

    def hello(self):
        print("Hello " + self.name)
        
user = User("Sample User") # userというインスタンスを生成しています。　
```

今回定義したUserクラスのコンストラクタはnameという引数を取り、
その引数で変数であるself.name（この変数のことをインスタンス変数と呼びます）を初期化しています。

インスタンス変数は、個々のインスタンスに格納される変数のことですので、ここでは5行目のnameがインスタンス変数です。

8行目に定義したhelloメソッド内9行目で、selfの後ろに属性名nameを書いていますが、
このように.インスタンス変数名と書くことで、インスタンス変数の作成及びアクセスができます


 https://wa3.i-3-i.info/word13646.html

コンストラクタ（英：constructor）とは
オブジェクト指向のプログラミング言語で登場する用語のひとつであり

インスタンスを作ったタイミングで実行されるメソッドのことです。

つまり　クラスをnewした瞬間に実行される関数のことです。

インスタンス変数にアクセスする

インスタンス変数にアクセスするには、インスタンス名.インスタンス変数と記述します。

```
user = User("Sample User")
py = User("python")

user.hello() # Hello Sample User
py.hello() # Hello python
```

自作のクラスを定義するソースコードを記述します
以下のソースコードでは
python クラス変数を利用し csvデータを読み込む outputフォルダを作成する  
事を実施しております

```
class my_directory_p:
    def __init__(self,pass_out):  # インスタンス化されて渡ってくる値を受ける変数を定義します
        # インスタンス変数（属性の初期化）
        self.pass_out = pass_out
        #コンストラクタが呼ばれる（クラスをnewした瞬間に実行される関数が呼ばれる）

    def pass_o(self):# pass_o　メソッドを定義する
        return self.pass_out　#定義したメソッドpass_oを利用するとpass_outの値がreturnでかえってくる

    def pass_out_new(self): # pass_out_new　メソッドを定義する
        # Create the folder "output" if it does not exist. 
        # pass_out_new　メソッド を使うと　output "フォルダが存在しない場合、作成します。
        data_dir = self.pass_out
        if not os.path.exists(data_dir):
            os.mkdir(data_dir)
        # 定義したメソッドpass_oを利用し　最初に作ったインスタンスの文字列をreturnする
        print(u.pass_o()+"I created a folder!")

    def imp_data(self):# imp_data　メソッドを定義する
        # imp_data　メソッドを使用すると　/data/　フォルダのQ_ktvRatio_tccl202101.csv　というCSVを読み込む
        image_file_path = './data/Q_ktvRatio_tccl202101.csv'
　　　　# "Shift-JIS" を　pandas として
        with codecs.open(image_file_path, "r", "Shift-JIS", "ignore") as file:
                df_md = pd.read_table(file, delimiter=",")
        return df_md

#define the value of self here
#ここでselfの値を定義する
u = my_directory_p("./output/")
# pass_out_new　メソッド を以下で使うと　output "フォルダが存在しない場合、作成します。
u.pass_out_new()
# imp_data　メソッドを使用すると　/data/　フォルダのQ_ktvRatio_tccl202101.csv　というCSVを読み込む
df_r=u.imp_data()
```

もしエクセルデータを直接読みこみたい場合　以下のようにします
定義する　メソッドを増やすと便利です

```
class my_directory_p:
    def __init__(self,pass_out):  # インスタンス化されて渡ってくる値を受ける変数を定義します
        # インスタンス変数（属性の初期化）
        self.pass_out = pass_out
        #コンストラクタが呼ばれる（クラスをnewした瞬間に実行される関数が呼ばれる）
    def pass_o(self):# pass_o　メソッドを定義する
        return self.pass_out #定義したメソッドpass_oを利用するとpass_outの値がreturnでかえってくる
    def pass_out_new(self): # pass_out_new　メソッドを定義する
        # Create the folder "output" if it does not exist. 
        # pass_out_new　メソッド を使うと　output "フォルダが存在しない場合、作成します。
        data_dir = self.pass_out
        if not os.path.exists(data_dir):
            os.mkdir(data_dir)
        # 定義したメソッドpass_oを利用し　最初に作ったインスタンスの文字列をreturnする
        print(u.pass_o()+"I created a folder!")
    def imp_data(self):# imp_data　メソッドを定義する
        # imp_data　メソッドを使用すると　/data/　フォルダのQ_ktvRatio_tccl202101.csv　というCSVを読み込む
        image_file_path = './data/Q_ktvRatio_tccl202101_2.csv'# "Shift-JIS" を　pandas として
        with codecs.open(image_file_path, "r", "Shift-JIS", "ignore") as file:
                df_md = pd.read_table(file, delimiter=",")
        return df_md
    def read_excel_data(self):#read_excel_data　メソッドを定義する
        #read_excel_data　メソッドを使用すると　/data/　フォルダのQ_ktvRatio_tccl202101_2.xlsx　というxlsxを読み込む
        image_file_path_excel = './data/Q_ktvRatio_tccl202101_2.xlsx'
        df = pd.read_excel(image_file_path_excel)
        return df

#define the value of self here
#ここでselfの値を定義する
u = my_directory_p("./output/")
# pass_out_new　メソッド を以下で使うと　output "フォルダが存在しない場合、作成します。
u.pass_out_new()
# imp_data　メソッドを使用すると　/data/　フォルダのQ_ktvRatio_tccl202101.csv　というCSVを読み込む
#df_r=u.imp_data()
#read_excel_data　メソッドを使用すると　/data/　フォルダのQ_ktvRatio_tccl202101_2.xlsx　というxlsxを読み込む
df_r=u.read_excel_data()
```