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

21 Авг 2019 в 07:05
188 +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
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 091 автору
Первые отклики появятся уже в течение 10 минут
Прямой эфир