2012-02-24 23 views
1

私は2つのクラスがあります:私はChildインスタンスにprint_methodを呼び出し、another_methodを見ることを期待して今親のself .__ dict__ dictに子属性はありませんか?

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 

をすることができます。しかし、失敗した。

+0

どうしたのですか? – Alanmars

答えて

3

これは継承とは全く関係ありません。 Child.another_method()はインスタンスではなくクラスの属性なので、__dict__selfではなく、Childであることになります。 Baseのインスタンスを作成し、このインスタンスでprint_methods()を呼び出すと、print_methodsも表示されません。

インスタンスのすべてのメソッドを見つけるには、dir()またはinspect.getmembers()callable()と組み合わせて、呼び出し可能な属性のみを含めることができます)を使用できます。

関連する問題