Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 25, 2016 17:56:53

Iris
Зарегистрирован: 2015-12-08
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

задачка на наследование классов

всем здравствуйте, вот решаю задачку на наследование классов
суть- мне сначала заводят данные, какой класс от какого наследуется, например
A
B : C D
C : A
и тд
а потом мне задаются вопросы, являются классы предками или нет, а я должна выводить йес ноу, например
B : C
йес

у меня есть алгоритм в голове, но до конца не доходит как его реализовать, вот тут прошу помощи

сначала я строки привожу в вид без двоеточия путем d=re.findall(+,c) получается всё красиво в виде

далее моя идея написать функцию так, чтобы выводились команды class B(C,D):pass

как-то так мне придумалось
def fun(a,*args):
for arg in args:
class a(arg):pass

fun(d)
но оно не работает

когда я спрашиваю его issubclass(B, C) говорит что этих классов нет

Офлайн

#2 Апрель 26, 2016 02:36:18

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

задачка на наследование классов

Iris
суть- мне сначала заводят данные
Что значит “заводят данные”? Просто в виде текста?

Iris
как-то так мне придумалось
Не, если там просто текст, то надо построить иерархию (дерево) и выполнять поиск по нему.



Отредактировано py.user.next (Апрель 26, 2016 02:37:45)

Офлайн

#3 Апрель 26, 2016 10:06:11

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

задачка на наследование классов

Iris
но оно не работает
Так работает:
>>> types = {}
>>> types['A'] = type('A', (), {})
>>> types['B'] = type('B', (), {})
>>> types['C'] = type('C', (types['A'],), {})
>>> types['D'] = type('D', (types['A'], types['B']), {})
>>> issubclass(types['A'], types['B'])
False
>>> issubclass(types['C'], types['A'])
True
>>> issubclass(types['D'], types['A'])
True
>>> issubclass(types['D'], types['B'])
True
>>>

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version