У self .__ dict__ dict в parent нет дочерних атрибутов? - PullRequest
1 голос
/ 24 февраля 2012

У меня есть два класса:

class Base(object):
  def __init__(self):
    object.__init__(self)

  def print_methods(self):
    print self.__dict__

class Child(Base):
   def __init__(self):
     Base.__init__(self)

   def another_method(self):
     pass

Теперь я могу вызвать print_method в Child экземпляре и ожидать увидеть another_method. Но не удалось.

1 Ответ

3 голосов
/ 24 февраля 2012

Это никак не связано с наследованием. Child.another_method() является атрибутом класса, а не экземпляра, поэтому он не в __dict__ из self, а скорее в указании Child. Если вы создадите экземпляр только Base и вызовете print_methods() для этого экземпляра, вы также не увидите print_methods.

Чтобы найти все методы экземпляра, вы можете использовать dir() или inspect.getmembers() (возможно в сочетании с callable() только для включения вызываемых атрибутов).

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