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()