2017-09-18 8 views
0

私は私がすでにcolor_enumにクラスを割り当てたとして、color_enumから値にアクセスすることはできませんよ割り当て列挙型クラスは

default_enums.py 

import enum 

class Color(enum.Enum): 
    Red = 0 
    Blue = 1 
    Green = 2 

app.py 

from default_enums import Color 

def set_enums(): 
    global color_enum 
    color_enum = Color 


another_file.py 

import app 

#this line throws the error 
# RuntimeError: no object bound to color_enum 
app.color_enum.Red 

列挙型クラスを持っています。

誰でも問題の解決にお手伝いできますか?

おかげ

+0

"私はすでにクラスをcolor_enumに割り当てています。"いいえ、あなたは決してそれをしませんでした。あなたは実際に関数 'def set_enums'を呼び出すことはありません... –

答えて

0

あなたがする必要があるのはapp.pyモジュールでset_enums()関数を呼び出しています。

-----------app.py----------- 

from default_enums import Color 

def set_enums(): 
    global color_enum 
    color_enum = Color 

#call the function to set the value for color_enum 
set_enums() 

-----------another_file.py----------- 

from app import * 

print(color_enum.Red.value) 
#0 

このwoksでは、私はデザインコードを改善できると感じていますが、事実、app.pyモジュール全体は必要ありません。 color_enum変数はこれまでに定義されていませんが、set_enums()関数で設定されています。これにより、直面したような問題が発生する可能性があります。

私は上記のデザインを実装するのではなく、コードデザインをもう一度見てみることをお勧めします。

+0

"ソフトウェア設計を構築するには2通りの方法があります。 1つの方法は、明らかに欠点がないように簡単にすることです。そしてもう1つの方法はそれを非常に複雑にして、明白な欠陥がないようにすることです。 " - C.A.R.ホアレ –