2011-11-12 8 views
1

外部クラスからmethod1()を呼び出すと、代わりに派生クラスmethod1()が呼び出されます。どのようにして、それを強制的に基本クラスmethod1を呼び出すことができますか?内部クラスにの初期があり、そこから親をと呼びます。ベースクラスから基本クラスメソッドを呼び出す

class OuterClassA 
    __init__ 
     method1() 

    def method1(self): 
     .... 

class InnerClassB(OuterClassA) 

    def method1(self): 
    .... 

答えて

2

コール基底クラスmethod1()

OuterClassA.method1(someClassBObject) 
+1

申し訳ありませんが、これは問題の推奨アプローチではありません。 –

+0

好ましい解決策は、最初にこれに踏み込まないことです。尋問者は避けが悪いと判断したので、残りの人はどの愚かな解決策が最も恐ろしいかを考え出しています。 –

+0

サブクラスがメソッドをオーバーライドできるようにするための正当なユースケースがありますが、親が直接内部コールを行うことを妨げることはありません。 –

3

この問題を解決するために、Pythonの二重アンダースコアのマングリングが設計されています。

詳しくは、http://docs.python.org/tutorial/classes.html#private-variableshttp://docs.python.org/reference/expressions.html#atom-identifiersを参照してください。

class OuterClassA: 
    def __init__(self): 
     self.__method1()  # call this class's private copy 

    def method1(self): 
     ... 
    __method1 = method1  # make a private (class local) copy 


class InnerClassB(OuterClassA) 
    def method1(self): 
     ... 
関連する問題