4

次のことができるようになりたい

class Parent:
    def __init__(self):
        pass
    def Create(self):
        return 'Password'

class Child(Parent):
    def __init__(self):
        self.Create()
    def Create(self):
        return 'The '+self.Create #I want to return 'The Password'

オーバーライドしている関数の子クラスから親関数を取得したいと思います。これを行う方法がわかりません。

これは説明が少し難しいので、理解に苦しむ場合はコメントしてください。

編集:

皆さんの回答に感謝します。これはほとんど不可能だと思いました。

4

4 に答える 4

8

このsuper()機能は、このような場合を対象としています。ただし、これは「新しいスタイル」のクラスでしか機能しないため、 の定義もParent継承するように変更する必要がありobjectます (とにかく、常に「新しいスタイル」のクラスを使用する必要があります)。

class Parent(object):
    def __init__(self):
        pass
    def Create(self):
        return 'Password'

class Child(Parent):
    def __init__(self):
        self.Create()
    def Create(self):
        return 'The ' + super(Child, self).Create()


print Child().Create() # prints "The Password"
于 2012-08-20T00:20:44.430 に答える
7

親を明示的に参照するか、(新しいスタイルのクラスで) を使用しますsuper()

class Child(Parent):
   ...
  def Create(self):
    return 'The ' + Parent.Create(self)
于 2012-08-20T00:21:48.470 に答える
0

superを介して基本クラスを参照するのと同じくらい簡単です。

class Child(Parent):
    def __init__(self):
        self.Create()
    def Create(self):
        return 'The '+ super(Child, self).Create()
于 2012-08-20T00:21:16.010 に答える
0

関数を使用しsuperて親にアクセスし、親super(Child,self).create()から create を呼び出します。

于 2012-08-20T00:21:16.323 に答える