Как конкретного наследника связать с конкретным родителем? Здравствуйте. Подскажите пожалуйста. Существует 2 класса. ComPort и производный от него класс Device. Существует 2 объекта типа ComPort: COM1, COM2, которые содержат собственные настройки (некие параметры), и, 2 объекта типа Device: Dev1 и Dev2. Объекты Dev1 и Dev2 используют наследуемую функцию write для записи данных в тот или иной ком-порт. Как сделать так, чтоб Dev1 использовал параметры только объекта COM1, а Dev2 только параметры COM2? Т.е. как указать жёсткую связь - конкретный родитель - конкретный наследник? Ибо если я пытаюсь в наследнике использовать параметры родителя, то получаю их значения по умолчанию, которые задаются через конструктор класса, а мне нужно использовать заданные для родителей значения бод-рейта, номер физического порта и прочее. Спасибо.
Для того, чтобы каждый объект типа Device использовал параметры только определенного объекта типа ComPort, вы можете передавать объект ComPort в конструктор класса Device и сохранять его внутри объекта Device.
Например, вы можете создать конструктор для класса Device, который принимает объект ComPort в качестве аргумента, и сохранять его внутри объекта Device:
class ComPort: def __init__(self, port, baud_rate): self.port = port self.baud_rate = baud_rate class Device: def __init__(self, com_port): self.com_port = com_port def write(self, data): # Здесь можно использовать параметры объекта com_port для записи данных print(f"Writing data to {self.com_port.port} with baud rate {self.com_port.baud_rate}: {data}") # Создаем объекты ComPort com1 = ComPort("COM1", 9600) com2 = ComPort("COM2", 115200) # Создаем объекты Device с разными ComPort dev1 = Device(com1) dev2 = Device(com2) # Пример использования dev1.write("Hello, COM1") dev2.write("Hello, COM2")
Таким образом, объект dev1 будет использовать параметры объекта com1, а объект dev2 - параметры объекта com2.
Для того, чтобы каждый объект типа Device использовал параметры только определенного объекта типа ComPort, вы можете передавать объект ComPort в конструктор класса Device и сохранять его внутри объекта Device.
Например, вы можете создать конструктор для класса Device, который принимает объект ComPort в качестве аргумента, и сохранять его внутри объекта Device:
class ComPort:def __init__(self, port, baud_rate):
self.port = port
self.baud_rate = baud_rate
class Device:
def __init__(self, com_port):
self.com_port = com_port
def write(self, data):
# Здесь можно использовать параметры объекта com_port для записи данных
print(f"Writing data to {self.com_port.port} with baud rate {self.com_port.baud_rate}: {data}")
# Создаем объекты ComPort
com1 = ComPort("COM1", 9600)
com2 = ComPort("COM2", 115200)
# Создаем объекты Device с разными ComPort
dev1 = Device(com1)
dev2 = Device(com2)
# Пример использования
dev1.write("Hello, COM1")
dev2.write("Hello, COM2")
Таким образом, объект dev1 будет использовать параметры объекта com1, а объект dev2 - параметры объекта com2.