Python:在子实例化后自动调用父函数

时间:2016-07-22 13:12:14

标签: python oop inheritance python-object

Python 2.7

我想在实例化其子对象

后自动调用父对象的函数
class Mother:

    def __init__(self):
        pass

    def call_me_maybe(self):
        print 'hello son'


class Child(Mother):

    def __init__(self):
        print 'hi mom'


# desired behavior

>>> billy = Child()
hi mom
hello son

我有办法做到这一点吗?

根据以下评论进行修改:

“我应该在我的问题中使它更清晰,我真正想要的是某种'自动'调用父方法,仅仅通过子实例化触发,没有显式调用父方法孩子。我希望有一种神奇的方法,但我不认为有。“

3 个答案:

答案 0 :(得分:4)

您可以使用super但是您应该将超类设置为从object继承:

class Mother(object):
#              ^
    def __init__(self):
        pass

    def call_me_maybe(self):
        print 'hello son'


class Child(Mother):

    def __init__(self):
        print 'hi mom'
        super(Child, self).call_me_maybe()
>>> billy = Child()
hi mom
hello son

答案 1 :(得分:1)

使用super()

class Child(Mother):
    def __init__(self):
        print 'hi mom'
        super(Child, self).call_me_maybe()

答案 2 :(得分:1)

由于子类继承了parent方法,因此您只需在__init__()语句中调用该方法即可。

class Mother(object):

    def __init__(self):
        pass

    def call_me_maybe(self):
        print('hello son')


class Child(Mother):

    def __init__(self):
        print('hi mom')
        self.call_me_maybe()