Форум сайта python.su
Как получить список (массив, словарь) родителей класса при множественном наследовании?
Офлайн
self.__class__.__bases__?
p.s. Чую, вопрос с подвохом.
..bw
Офлайн
class.__mro__ ?
Офлайн
2 рой вариан неработает, а первый вроде рпботает. Для следующего кода:
class A:
pass
class B:
pass
class C(A,B):
def __init__(self):
print(str(self.__class__.__bases__))
#print(С.__mro__)
if __name__=='__main__':
C()
Отредактировано (Июль 7, 2010 20:52:54)
Офлайн
Разобрался с вопросом полностью:
http://belstudent.cyberblogger.ru/2010/07/07/poluchenie-spiska-roditelej-klassa-pri-mnozhestvennom-nasledovanii.html
Офлайн
Ну это же не правда.
Оба способа работают в двойке (про тройку не скажу, не интересовался, неужели там сохранили старые классы?). И первый некорректен, точнее не полон, требуется рекурсивный обход __bases__ всех встречающихся классов, не только текущего.
..bw
Офлайн
А зачем рекурсивный обход? мне нужно знать только предков моего текущего класса, а не всех предков вообще.
Офлайн
> мне нужно знать только предков моего текущего класса
Странная хотелка. Тогда __mro__ вам точно не помощник, используйте __bases__ (к тому же он работает для всех типов объектов).
..bw
Офлайн
bwты прав
> мне нужно знать только предков моего текущего класса
Странная хотелка. Тогда __mro__ вам точно не помощник, используйте __bases__ (к тому же он работает для всех типов объектов).
..bw
Офлайн