Уведомления

Группа в Telegram: @pythonsu

#1 Июль 7, 2010 18:52:53

BelStudent
От:
Зарегистрирован: 2010-06-09
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить список родителей класса при при множественном насл-нии?

Как получить список (массив, словарь) родителей класса при множественном наследовании?



Офлайн

#2 Июль 7, 2010 19:21:55

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Как получить список родителей класса при при множественном насл-нии?

self.__class__.__bases__?

p.s. Чую, вопрос с подвохом.

..bw



Офлайн

#3 Июль 7, 2010 19:26:01

meticulos.slacker
От:
Зарегистрирован: 2010-04-15
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить список родителей класса при при множественном насл-нии?

class.__mro__ ?



Офлайн

#4 Июль 7, 2010 20:46:49

BelStudent
От:
Зарегистрирован: 2010-06-09
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить список родителей класса при при множественном насл-нии?

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()
Вывело
(<class __main__.A at 0xb775c71c>, <class __main__.B at 0xb775c8fc>)

Не совсем идеальный вариант, но сойдет



Отредактировано (Июль 7, 2010 20:52:54)

Офлайн

#5 Июль 7, 2010 21:44:43

BelStudent
От:
Зарегистрирован: 2010-06-09
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить список родителей класса при при множественном насл-нии?

Офлайн

#6 Июль 7, 2010 23:33:03

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Как получить список родителей класса при при множественном насл-нии?

Ну это же не правда.
Оба способа работают в двойке (про тройку не скажу, не интересовался, неужели там сохранили старые классы?). И первый некорректен, точнее не полон, требуется рекурсивный обход __bases__ всех встречающихся классов, не только текущего.

..bw



Офлайн

#7 Июль 8, 2010 08:25:06

BelStudent
От:
Зарегистрирован: 2010-06-09
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить список родителей класса при при множественном насл-нии?

А зачем рекурсивный обход? мне нужно знать только предков моего текущего класса, а не всех предков вообще.



Офлайн

#8 Июль 8, 2010 12:01:19

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Как получить список родителей класса при при множественном насл-нии?

> мне нужно знать только предков моего текущего класса
Странная хотелка. Тогда __mro__ вам точно не помощник, используйте __bases__ (к тому же он работает для всех типов объектов).

..bw



Офлайн

#9 Июль 8, 2010 12:09:31

BelStudent
От:
Зарегистрирован: 2010-06-09
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить список родителей класса при при множественном насл-нии?

bw
> мне нужно знать только предков моего текущего класса
Странная хотелка. Тогда __mro__ вам точно не помощник, используйте __bases__ (к тому же он работает для всех типов объектов).

..bw
ты прав



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version