Python: автоматически вызывать родительскую функцию после создания дочернего объекта

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 ответа

Вы могли бы использовать 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

Так как дочерний класс наследует методы родителей, вы можете просто вызвать метод в __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()

Использование super()?

class Child(Mother):
    def __init__(self):
        print 'hi mom'
        super(Child, self).call_me_maybe()
Другие вопросы по тегам