2016-04-14 15 views
1

サブクラスのディクショナリからスーパークラス変数にアクセスする際に問題があります。スーパークラスの変数をディクショナリサブクラスに追加し、値を読み込み

class SetStuff: 
    def __init__(self): 
     self.temperature = 0.0 

    def set_temp(self, temp): 
     self.temperature = temp 


class DoStuff(SetStuff): 
    def __init__(self): 
     super().__init__() 
     self.info_dict = {"temp": {"current_temp": self.temperature}} 

    def print_stuff(self): 
     print("temp_var:", self.temperature) 
     print("dict:", self.info_dict) 



test_stuff = DoStuff() 
test_stuff.set_temp(12.1) 
test_stuff.print_stuff() 

最終呼び出しの結果である:

temp_var: 12.1 
dict: {'temp': {'current_temp': 0.0}} 

Iが印刷辞書は12.1を含有することが予想に対し 次のコードは、単純化した例です。私はここで何が起きているのか、どうやって解決できるのか見当もつかないようです。

ご協力いただければ幸いです。

答えて

1

self.info_dictが設定されています。それは説明のためのself.temperature

+0

感謝の初期値に設定されていますので、そのself.temperatureの値が実際にcurrent_tempゼロで、理にかなって__init__にあります。変数を現在の値に更新する方法はありますか? –

+0

あなたは 'self.info_dict ['temp'] ['current_temp'] = self.temperature'を実行できますが、値が必要な場合は属性を呼び出すことができます。なぜここで 'dict'が役に立つのか不明です。値を呼び出すだけであれば、dictは少し冗長です。あなたは本当にしたい場合は、 'self.temperature'を呼び出す代わりに、' self .__ dict __ ['temperature'] 'のインデックスを付けることさえできます。 – Pythonista

関連する問題