Как конкретного наследника связать с конкретным родителем? Здравствуйте. Подскажите пожалуйста.
Существует 2 класса. ComPort и производный от него класс Device.
Существует 2 объекта типа ComPort: COM1, COM2, которые содержат собственные настройки (некие параметры), и, 2 объекта типа Device: Dev1 и Dev2.
Объекты Dev1 и Dev2 используют наследуемую функцию write для записи данных в тот или иной ком-порт.
Как сделать так, чтоб Dev1 использовал параметры только объекта COM1, а Dev2 только параметры COM2? Т.е. как указать жёсткую связь - конкретный родитель - конкретный наследник? Ибо если я пытаюсь в наследнике использовать параметры родителя, то получаю их значения по умолчанию, которые задаются через конструктор класса, а мне нужно использовать заданные для родителей значения бод-рейта, номер физического порта и прочее. Спасибо.

21 Авг 2019 в 07:05
206 +1
1
Ответы
1

Для того, чтобы каждый объект типа 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.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир