Найти - Пользователи
Полная версия: Получение иерархии классов
Начало » Python для новичков » Получение иерархии классов
1
vkopey
Нужна функция возвращающая иерархию классов Python. Вот, что я сотворил:

def get_class_hierarchy(obj):
if obj.__class__.__name__=='type':
c=obj
else:
c=obj.__class__
lst=
while c.__base__:
lst.append(c.__base__.__name__)
c=c.__base__
return lst

Только работает она, если нет множественного наследования.
Есть еще:

from inspect import getclasstree
getclasstre()

Но она не возвращает всю иерархию.
Спасибо.
Soteric
Как можно использовать эту функцию и зачем?
vkopey
Soteric
Как можно использовать эту функцию и зачем?
Для получения списка иерархии классов какого-либо объекта/класса. Меня интересует, не существует ли более простого и эффективного решения с поддержкой множественного наследования.
Soteric
Меня интересовало как раз зачем нужен такой список. В каких-то отладочных целях или приложение так задизайнено, что оно принимает какие-то решения, основываясь на иерархии?
vkopey
Soteric
зачем нужен такой список
например его можно использовать в каком-нибудь Python IDE.
bazooka
class A(object): pass
class B(object): pass
class C(A, B): pass
class D(C): pass


print(A.__mro__)
print(B.__mro__)
print(C.__mro__)
print(D.__mro__)
(<class ‘__main__.A’>, <type ‘object’>)
(<class ‘__main__.B’>, <type ‘object’>)
(<class ‘__main__.C’>, <class ‘__main__.A’>, <class ‘__main__.B’>, <type ‘object’>)
(<class ‘__main__.D’>, <class ‘__main__.C’>, <class ‘__main__.A’>, <class ‘__main__.B’>, <type ‘object’>)
ZAN
bazooka, жаль нельзя плюсик поставить на пост :)
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