質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

2926閲覧

pythonで共通の定数を使うにはどうしたらいいでしょうか

supermaruetsu

総合スコア148

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

2クリップ

投稿2020/05/01 02:00

本番環境とステージング環境の設定ファイルstg-pyprod.pyがあります。
この2ファイルに共通する定数を切り出したいのですが、どうすればいいでしょうか。common.pyを作って、それをインポートする手を考えましたが、ロジックに影響が出るため、(既存ロジックの変数名がstg.CONST_COMMOM_MSGからcommon.CONST_COMMOM_MSGへ変わることになるため)これは避けたいと思っています。
既存ロジックに影響を出さない方法で、共通の部分を切り出す方法は無いのでしょうか。

python

1# stg.py 2 3CONST_COMMOM_MSG = '共通メッセージ' 4 5CONST_STG_MSG = 'ここはstgです' 6

python

1# prod.py 2 3CONST_COMMOM_MSG = '共通メッセージ' 4 5CONST_PROD_MSG = 'ここはprodです' 6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2020/05/01 02:31

ここに貼ってあるコードはなんでしょうか? 現在のコードですか? (だとすると「既存ロジックの変数名がstg.CONST_COMMOM_MSGからcommon.CONST_COMMOM_MSGへ変わることになるため」という記載の意味が分からなくなります) この2つのコードの関係はなんでしょうか? どちらかがどちらかをimportしているのですか? それとも両方とも実行用の(python xx.py とするための)コードでしょうか?
supermaruetsu

2020/05/01 02:54

2つのファイルはenvファイルと言えばイメージしやすいでしょうか... s3のbucket名等、環境によって異なる定数をそれぞれ定義する為のものです。 stg環境ではstg.pyのみをインポートし、本番環境ではprod.pyを切り替えてインポートします。
quickquip

2020/05/01 03:50 編集

> prod.pyを切り替えてインポートします ここが不明です。 実行ファイルは別にあってインポートはそこに書いてあるのでしょうか? それは具体的にどう書いてあって、どう使って、どう切り替えているのでしょうか? (それこそが質問でしょうか?) あと返信は不要で、情報は質問に書いてください。ここは「質問への追記・修正の依頼」欄です。
guest

回答1

0

既存ロジックの変数名がstg.CONST_COMMOM_MSGからcommon.CONST_COMMOM_MSGへ変わることになるため

の意図がまだ分かっていませんが(コードにstg.CONST_COMMOM_MSGと書いてあるならprod.pyの存在意義が想像できない)、

python

1# stg.py 2 3from common import CONST_COMMOM_MSG, OTHER_CONST 4 5CONST_STG_MSG = 'ここはstgです'

python

1# prod.py 2 3from common import CONST_COMMOM_MSG, OTHER_CONST 4 5CONST_PROD_MSG = 'ここはprodです'

python

1# common.py 2 3CONST_COMMOM_MSG = '共通メッセージ' 4OTHER_CONST = 'hogehoge'

のようなコードをお望みなのではと想像しました。

投稿2020/05/01 06:10

quickquip

総合スコア11063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問