Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 03.03.2021
Сообщений: 45

Наследование классов

29.04.2021, 15:26. Показов 837. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вам дано описание наследования классов в следующем формате.

имя класса 1 : имя класса 2 имя класса 3 ... имя класса k

Это означает, что класс 1 отнаследован от класса 2, класса 3, и т. д.

Или эквивалентно записи:

class Class1(Class2, Class3 ... ClassK):
pass
Класс A является прямым предком класса B, если B отнаследован от A:

class B(A):
pass
Класс A является предком класса B, если

A = B
A - прямой предок B
существует такой класс C, что C - прямой предок B и A - предок C
Например:

class B(A):
pass

class C(B):
pass

# A -- предок С
Вам необходимо отвечать на запросы, является ли один класс предком другого класса

Важное примечание:Создавать классы не требуется.

Формат входных данных

В первой строке входных данных содержится целое число n - число классов.

В следующих n строках содержится описание наследования классов. В i-й строке указано от каких классов наследуется i-й класс. Обратите внимание, что класс может ни от кого не наследоваться. Гарантируется, что класс не наследуется сам от себя (прямо или косвенно), что класс не наследуется явно от одного класса более одного раза.

В следующей строке содержится число q - количество запросов.

В следующих q строках содержится описание запросов в формате имя класса 1 имя класса 2.

Имя класса – строка, состоящая из символов латинского алфавита, длины не более 50.

Формат выходных данных

Для каждого запроса выведите в отдельной строке слово "Yes", если класс 1 является предком класса 2, и "No", если не является.


Не совсем понимаю суть задачи. Я нашел код в интернете. Не могли бы вы его хотя бы кратко, пожалуйста,прокомментировать?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
classes = {}
 
def add_class(classes, class_name, parents):
    if class_name not in classes:
        classes[class_name] = []
    classes[class_name].extend(parents)
    for parent in parents:
        if parent not in classes:
            classes[parent] = []
 
def found_path(classes, start, end, path=[]):
    path = path + [start]
    if start == end:
        return path
    if start not in classes:
        return None
    for node in classes[start]:
        if node not in path:
            newpath = found_path(classes, node, end, path)
            if newpath: return newpath
    return None
 
def answer(classes, parent, child):
    if not(parent or child) in classes or not found_path(classes, child, parent):
        return 'No'
    return 'Yes'
 
n = int(input())
for _ in range(n):
    class_description = input().split()
    class_name = class_description[0]
    class_parents = class_description[2:]
    add_class(classes, class_name, class_parents)
 
q = int(input())
for _ in range(q):
    question = input().split()
    parent = question[0]
    child = question[1]
    print(answer(classes, parent, child))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.04.2021, 15:26
Ответы с готовыми решениями:

Наследование классов
PITCHES = class Note: def __init__(self, nota, is_long=False): self.nota = nota self.is_long = is_long ...

Наследование классов
Всем добрый день! Написала решение к задаче, приведенной ниже, но оно не проходит элементарные проверки. Всю голову сломала, не могу...

Наследование классов
Можно ли узнать предка класса экземпляра? summer_house = class Garden: result = def __init__(self,...

4
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
29.04.2021, 16:17
Обход данных
0
0 / 0 / 0
Регистрация: 03.03.2021
Сообщений: 45
29.04.2021, 16:26  [ТС]
eaa, Спасибо, вроде всё в коде понятно. Но не могли бы Вы сказать что делает и какую играет роль start,end и path в функции?

Добавлено через 3 минуты
eaa, я про этот
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
def dfs(classes, start, end, path=[]):
    if not path:
        path = [start]
    if start == end:
        yield path
    for node in classes[start]:
        yield from dfs(classes, node, end, path + [node])
 
 
classes = {}
for _ in range(int(input())):
    s = input()
    if ':' in s:
        child, parents = s.split(' : ')
        parents = parents.split()
        if child not in classes:
            classes[child] = []
        for parent in parents:
            classes[child].append(parent)
            if parent not in classes:
                classes[parent] = []
    else:
        child = s
        if child not in classes:
            classes[child] = []
 
# print(*classes.items(), sep='\n')
 
for _ in range(int(input())):
    parent, child = input().split()
    if (parent in classes and child in classes) \
            and list(dfs(classes, child, parent)):
        # print(*dfs(classes, child, parent))
        print('Yes')
    else:
        print('No')
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
29.04.2021, 16:27
start - начало, end - конец, path - путь.
0
0 / 0 / 0
Регистрация: 03.03.2021
Сообщений: 45
29.04.2021, 16:44  [ТС]
eaa, извините, а можете чуть подробнее описать их роботу в функции?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.04.2021, 16:44
Помогаю со студенческими работами здесь

Наследование двух классов
Всем добрый день. Как сделать так, чтобы корректно переносились init'ы двух первых классов в третий? # здесь только цвет class...

Наследование у классов, проблема с переопределением
Реализуйте несколько классов, вычисляющих суммы следующих последовательностей натуральных чисел от 1 до N: 1 + 2 + .. N 1 + 2^2 +...

Создание экземпляра классов и наследование
Только начал изучать ООП в питоне. Ниже код + выдаваемая ошибка. что я делаю не так? Понимаю, что, скорее всего, ошибка элементарная, но...

Наследование, полиморфизм, создание классов
Доброго времени суток, у меня возник вопрос , опять же по данной теме. Есть код. Задание было таким: Написать программу, в...

Как сделать наследование двух классов
Данны два класса, в третьем классе необходимо наследовать оба класса. Не понимаю как реализовать, помогите разобраться class...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru