2

蟒蛇 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

有没有办法我可以做到这一点?

编辑,来自下面的评论:

“我应该在我的问题中更清楚地说明,我真正想要的是仅由子实例化触发的某种'自动'调用父方法,而没有从子方法显式调用父方法。我希望有某种神奇的方法可以解决这个问题,但我认为没有。”

4

3 回答 3

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
于 2016-07-22T13:15:58.697 回答
1

使用super()

class Child(Mother):
    def __init__(self):
        print 'hi mom'
        super(Child, self).call_me_maybe()
于 2016-07-22T13:13:34.013 回答
1

由于子类继承了父类的方法,因此可以简单地调用__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()
于 2016-07-22T13:21:44.193 回答