У меня есть класс Device
, у которого двое детей: SmartSwitch
и Refrigerator
. Моя проблема в том, что SmartSwitch имеет атрибуты, которые я назначил для Холодильника, что не должно происходить.
Вот как я распечатываю вывод:
device_dict = {}
device_dict["Kitchen Fridge"] = Refrigerator("Kitchen Fridge", 2)
device_dict["Water Heater Switch"] = SmartSwitch("Water Heater Switch")
for device_name2 in device_dict:
print("{}:\n{}\n-----\n".format(device_name2, device_dict[device_name2].get_data()))
Вот вывод:
Kitchen Fridge:
{'Name': 'Water Heater Switch', 'State': 'off', 'temp': 2, 'Type': 'Smart Switch'}
-----
Water Heater Switch:
{'Name': 'Water Heater Switch', 'State': 'off', 'temp': 2, 'Type': 'Smart Switch'}
-----
Переключатель водонагревателя полностью переопределяет данные холодильника.
Вот код для классов, которые я использую:
Устройство:
class Device:
data = {"Name": None, "State": "off"}
def __init__(self, name, state=None):
self.data["Name"] = name
if state is not None:
self.data["State"] = state
super().__init__()
def get_data(self):
return self.data
def set_name(self, name):
self.data["Name"] = name
return self.get_data()
def set_state(self, state):
self.data["State"] = state
return self.get_data()
SmartSwitch:
from Device import Device as Parent, Device
class SmartSwitch(Device):
def __init__(self, name):
super().__init__(name)
self.data["Type"] = "Smart Switch"
Холодильник:
from Device import Device
class Refrigerator(Device):
def __init__(self, name, temp=None):
super().__init__(name)
if temp is not None:
self.data["temp"] = temp
self.data["Type"] = "Refrigerator"
def set_temperature(self, temp):
self.data["temp"] = int(temp)
return self.get_data()