Найти - Пользователи
Полная версия: задачка на наследование классов
Начало » Python для новичков » задачка на наследование классов
1
Iris
всем здравствуйте, вот решаю задачку на наследование классов
суть- мне сначала заводят данные, какой класс от какого наследуется, например
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) говорит что этих классов нет
py.user.next
Iris
суть- мне сначала заводят данные
Что значит “заводят данные”? Просто в виде текста?

Iris
как-то так мне придумалось
Не, если там просто текст, то надо построить иерархию (дерево) и выполнять поиск по нему.
Shaman
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
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB