覆盖Python

时间:2012-08-20 00:18:51

标签: python

我希望能够做到以下

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 个答案:

答案 0 :(得分:8)

The super() function适用于此类案例。但是,它只适用于“新式”类,因此您需要修改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"

答案 1 :(得分:7)

要么明确地引用父项,要么(在新式类中)使用super()

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

答案 2 :(得分:0)

就像通过super引用基类一样简单:

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

答案 3 :(得分:0)

使用super功能访问父super(Child,self).create()以从父级调用create。