2016-04-14 39 views
1

Alt sınıftaki bir sözlüğe bir üst sınıf değişkenine erişme konusunda sorun yaşıyorum.Sözlük alt sınıfına üst sınıf değişkenini ekleyin ve okunan değeri

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() 

son çağrının sonucudur:

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

Ben baskılı sözlüğü 12.1 içermesi bekleniyor Oysa Aşağıdaki kod basitleştirilmiş bir örnektir. Burada olanları ve bunu nasıl düzeltebileceğimi anlayamıyorum.

Herhangi bir yardım büyük memnuniyetle karşılanacaktır.

cevap

1

self.info_dict'un ayarlandığı yere bakın. Bu, bu açıklama için self.temperature

+0

Teşekkür başlangıç ​​ değere ayarlanmış ediliyor çünkü __init__ böylece self.temperature değeri current_temp için gerçekten sıfır olduğu öyle mantıklı. Söz konusu değişkeni güncel değerine güncellemenin bir yolu var mı? –

+0

'self.info_dict ['temp'] ['current_temp'] = self.temperature' işlevini kullanabilirsiniz, ancak bu değere ihtiyacınız varsa, yalnızca niteliği arayabilirsiniz. Burada bir "dict" ın neden yararlı olacağı belli değil. Sadece değeri çağırmanız gerekiyorsa, bunun için biraz gereksizdir. Hatta eğer gerçekten istediysen 'self.temperature' yerine 'self .__ dict __ [' temperature ']' dizinini bile dizine ekleyebilirsiniz. – Pythonista