A.pyのクラスから B.pyのファイルのdictを参照する


pythonにおいて

A.pyには classを定義し、

そのファイルの下部に、そのクラスを実行するための

class のインスタンス化とインスタンスのメソッドを記述し


B.pyには classを定義せずに

変数に、値が増えたり減ったりすることのない

dictを定義して、A.pyのクラスから

定数のように参照したいのですが、


A.py, 

B.pyをどのように記述すればいいのでしょうか?


Bにはclass は定義しないのですが、

importの宣言が要るのでしょうか?



A.py から B.py の dict を定数のように参照する場合、

B.py は通常の Python モジュールとして扱われるため、

`import` が必要です。


以下のように記述すると、A.py のクラス内から 

B.py の dict を定数のように参照できます。


---


### **B.py (定数用の辞書を定義)**


```python


# B.py


CONFIG = {


    "API_KEY": "your_api_key",

    "TIMEOUT": 30,

    "MAX_RETRIES": 5

}


```


---


### **A.py (B.py の辞書を参照)**


```python


# A.py


import B  # B.pyをインポート


class MyClass:


    def __init__(self):

# B.py の CONFIG を参照

        self.api_key = B.CONFIG["API_KEY"]  

        self.timeout = B.CONFIG["TIMEOUT"]


    def show_config(self):

        print(f"API_KEY:

{self.api_key}, TIMEOUT: {self.timeout}")


# クラスをインスタンス化してメソッドを実行

if __name__ == "__main__":


    obj = MyClass()

    obj.show_config()

```


---


### **説明**


1. **B.py**


   - `CONFIG` という `dict` を定義し、API キーや設定値を格納。

   

   - クラスは定義せず、単なるグローバル変数として辞書を保持。



2. **A.py**


   - `import B` で B.py を読み込む(クラスは不要)。

   

   - `B.CONFIG` を参照し、辞書の値をクラスのプロパティとして利用。

   

   - `if __name__ == "__main__":` の中で 

`MyClass` をインスタンス化し、`show_config` メソッドを実行。


---


### **ポイント**


✅ `B.py` の `CONFIG` は `import B` によって `B.CONFIG` でアクセス可能。 

 

✅ `CONFIG` は `dict` なので、他の Python ファイルから変更しない限り不変。  

✅ `B.py` には `import` の記述は不要(定数定義だけのファイルだから)。  

✅ `A.py` では `import B` のみで `B.py` の `CONFIG` を利用できる。  


この方法で `B.py` を定数のように扱い、`A.py` のクラスから参照できます!


コメント