0

クラス A があり、クラス A からクラス B を継承しています。ClassA には 2 つのメソッド methodX と methodY があります。この methodY は classA の methodX を呼び出します。これで、ClassB に methodZ ができました。

シナリオは次のとおりです。

class A(object):
 def methodX(self):
  ....
 def methodY(self):
  methodX()

class B(A)
 def methodZ(self):
  self.methodY() #says the global methodX is not defined 

私の質問は、methodZ から methodX を呼び出す methodY を呼び出さなければならないということです。それはどのように可能ですか?methodX をグローバルに定義する必要がありますか? または、他の選択肢はありますか..事前に感謝します!

4

3 に答える 3

3

methodYを呼び出す必要がありますself.methodX()

于 2013-04-02T05:51:19.657 に答える
0

前に言われたように、 self.methodX() を使用すると問題が解決するようです。これをチェックして:

class A(object):
    def methodX(self):
        print "A.methodX"
    def methodY(self):
        print "A.methodY"
        self.methodX()

class B(A):
    def methodZ(self):
        print "B.methodZ"
        self.methodY()

b = B()
b.methodZ()

次の出力が生成されます。

$ python test.py
B.methodZ
A.methodY
A.methodX
$

それはあなたが探していたものだと思います...

于 2013-04-02T08:45:42.703 に答える
0

そのクラスのオブジェクトを使用せずにメンバー関数を呼び出すことはできないため、このエラーがスローされます。使用する

self.methodX()

methodX()の呼び出しに使用されたオブジェクトを使用して、オブジェクトを使用して関数を呼び出します。methodY()

于 2013-04-02T07:35:43.873 に答える