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を含有することが予想に対し 次のコードは、単純化した例です。私はここで何が起きているのか、どうやって解決できるのか見当もつかないようです。
ご協力いただければ幸いです。
感謝の初期値に設定されていますので、そのself.temperatureの値が実際に
current_temp
ゼロで、理にかなって__init__
にあります。変数を現在の値に更新する方法はありますか? –あなたは 'self.info_dict ['temp'] ['current_temp'] = self.temperature'を実行できますが、値が必要な場合は属性を呼び出すことができます。なぜここで 'dict'が役に立つのか不明です。値を呼び出すだけであれば、dictは少し冗長です。あなたは本当にしたい場合は、 'self.temperature'を呼び出す代わりに、' self .__ dict __ ['temperature'] 'のインデックスを付けることさえできます。 – Pythonista