python_別のファイルのクラスなどを参照する場合の_ファイルの配置

 

pythonにおいて


A.pyには classを定義し、

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

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


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

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

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

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


パソコンのファイルシステム内でのファイルの配置、

といいますか、それらのファイルは同じフォルダに

置いておくものなのでしょうか?


それと、pythonにおける「モジュール」というのは、

pythonスクリプトファイルのことでしょうか?



Python で `A.py` から 

`B.py` の `dict` を参照する方法について説明します。


### ファイルの配置


`A.py` から `B.py` をインポートする場合、

基本的には**同じフォルダ内**に配置するのが最も簡単です。

例えば、次のような構成にすると、

`A.py` から `B.py` を直接インポートできます。


```

/project-folder

  ├── A.py

  ├── B.py

  

```


この場合、`A.py` から `B.py` をインポートするには、

単に `import B` または `from B import 定数名` 

を記述すればOKです。


---


### `B.py` の内容(定数として `dict` を定義)


`B.py` では、変数に辞書(`dict`)を定義し、

それを `A.py` からインポートできるようにします。


```python


# B.py

MY_CONSTANTS = {

    "apple": 1,

    "banana": 2,

    "cherry": 3

}


```


---


### `A.py` で `B.py` を参照する


`A.py` のクラス内で `B.py` の `MY_CONSTANTS` を使用できます。


```python

# A.py

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


class MyClass:


    def print_constants(self):

# B.py の定数を参照

        print(B.MY_CONSTANTS)  


# クラスのインスタンス化とメソッド実行


if __name__ == "__main__":

    obj = MyClass()

    obj.print_constants()

```


---


### `python` における「モジュール」とは?


Python では、「モジュール(module)」とは

**Python のスクリプトファイル

(拡張子 `.py` のファイル)**のことを指します。 

 

つまり、`B.py` もモジュールであり、

`import B` によってその内容を `A.py` で利用できます。


---


### 補足:異なるフォルダに配置する場合


もし `A.py` と `B.py` を異なるフォルダに配置したい場合は、

適切に `sys.path` を変更するか、

`PYTHONPATH` を設定する必要があります。



例えば、以下のような構成の場合:


```

/project-folder

  ├── main.py  # 実行スクリプト

  ├── module/

  │   ├── __init__.py  # 空でもOK(パッケージとして認識)

  │   ├── A.py

  │   ├── B.py

  

```


`main.py` から `A.py` を実行しつつ 

`B.py` を参照するには、

以下のように `module` をパッケージとしてインポートできます。


```python


# main.py

from module.A import MyClass


obj = MyClass()

obj.print_constants()


```


このように `module/` の中に `__init__.py` を作成すれば、

`module` は Python の**パッケージ**として認識され、

`from module import B` のようなインポートが可能になります。


---


### まとめ


- **A.py と B.py は同じフォルダに置くのが簡単。**


- **B.py をインポートして、辞書を A.py で参照できる。**


- **「モジュール」とは Python スクリプト(`.py` ファイル)のこと。**


- **異なるフォルダに分けるなら 

`__init__.py` を使ってパッケージ化できる。**


この方法でうまく動作するか試してみてください! 😊





コメント