父母的自我.__ dict__ dict没有儿童属性?

时间:2012-02-24 01:39:50

标签: python inheritance

我有两个班级:

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 个答案:

答案 0 :(得分:3)

这与继承无关。 Child.another_method()是类的属性,而不是实例,因此它不在__dict__的{​​{1}}中,而是在self的字典中。如果您仅创建Child的实例并在此实例上调用Base,则您也不会看到print_methods()

要查找实例的所有方法,您可以使用print_methodsdir()(可能与inspect.getmembers()结合使用,仅包含可调用属性)。