получить информацию об отношениях наследования в Python - PullRequest
1 голос
/ 14 октября 2011

Скажем, у меня есть следующие отношения наследования.

object->Car->SUV

object является отцом Car, а Car является отцом SUV.

Как я могу использовать программы Python для получения такой информации о взаимоотношениях, например, использовать dir, чтобы получить атрибуты класса

Ответы [ 2 ]

2 голосов
/ 14 октября 2011

В дополнение к __bases__, который упоминался в aix, есть также __mro__, который сообщит вам все классы, от которых вы наследуете, обратно к object и порядок, в котором онибудет выполнен поиск заданного атрибута.

class foo(object):
   pass

class bar(foo):
   pass

print bar.__mro__
>>> (<class '__main__.bar'>, <class '__main__.foo'>, <type 'object'>)

Если у вас есть экземпляр, а не класс, вы можете сделать type(x).__mro__.

2 голосов
/ 14 октября 2011

Использование __bases__:

In [11]: SUV.__bases__
Out[11]: (<class '__main__.Car'>,)

In [12]: Car.__bases__
Out[12]: (<type 'object'>,)

Если целью является вызов родительского метода из дочернего метода, используйте вместо него super().

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