0

続行する前に、サブクラス固有の処理を実行するために、コード内のスーパーカスでメソッドを呼び出したいと考えています。私は最近 C# から python に来ました...そこでは、おそらくインターフェイスを使用します。その要点は次のとおりです(私が想像しているように、しかし機能していません):

class superClass:
    def do_specific_stuff(self): #To be implemented entirely by the subclass, 
        #but called from the superclass
        pass

    def do_general_stuff1(self):
        #do misc

    def do_general_stuff2(self):
        #do more misc

    def main_general_stuff(self):
        do_general_stuff1()
        do_specific_stuff()
        do_general_stuff2()

私はこれをかなり複雑に実装しています。この例はまさに私が必要としているものであり、初めて見る人にとって理解するのははるかに苦痛ではありません. 現時点で呼び出すdo_specific_stuff()と、エラーが発生します

「グローバル名「do_specific_stuff」は定義されていません。

「self」を追加するとself.do_specific_stuff、エラーが発生します

「TypeError: do_specific_stuff() は 0 の位置引数を取りますが、1 が指定されました。」テイカーはいますか?前もって感謝します...

4

1 に答える 1

4

それはする必要があります

def main_general_stuff(self):
    self.do_general_stuff1()
    self.do_specific_stuff()
    ...

問題は、への明示的な参照が欠落していることですself: Python は、それなしでグローバル関数を意味すると考えます。Javaには暗黙的な like がないことに注意してくださいthis。指定する必要があります。

于 2013-08-21T00:51:50.900 に答える