vkopey
Июнь 13, 2011 20:36:22
Нужна функция возвращающая иерархию классов 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
Июнь 13, 2011 21:06:49
Как можно использовать эту функцию и зачем?
vkopey
Июнь 13, 2011 21:11:45
Soteric
Как можно использовать эту функцию и зачем?
Для получения списка иерархии классов какого-либо объекта/класса. Меня интересует, не существует ли более простого и эффективного решения с поддержкой множественного наследования.
Soteric
Июнь 14, 2011 13:52:45
Меня интересовало как раз зачем нужен такой список. В каких-то отладочных целях или приложение так задизайнено, что оно принимает какие-то решения, основываясь на иерархии?
vkopey
Июнь 14, 2011 23:00:18
Soteric
зачем нужен такой список
например его можно использовать в каком-нибудь Python IDE.
bazooka
Июнь 15, 2011 00:16:23
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
Июнь 15, 2011 22:52:19
bazooka, жаль нельзя плюсик поставить на пост :)