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` のクラスから参照できます!
コメント
コメントを投稿