Python: возможно ли объединить два __init__ после множественного наследования? - PullRequest
0 голосов
/ 04 ноября 2019

Я хочу, чтобы мои класс Parents (мама, папа) наследовали атрибуты init от двух предыдущих классов, поэтому для моего ввода мне потребуется написать mom_name и dad_name. Может кто-нибудь подсказать мне, как это сделать?

class Mom(object):
    def __init__(self, mom_name):
        self.mom_name = mom_name

class Dad(object):
    def __init__(self, dad_name):
        self.dad_name = dad_name

class Parents(Mom, Dad):
    pass

par = Parents('Mom', 'Dad')
print(par.mom_name)
print(par.dad_name)

Ответы [ 2 ]

4 голосов
/ 04 ноября 2019

вы можете реализовать это следующим образом

class Mom(object):
    def __init__(self, mom_name):
        self.mom_name = mom_name

class Dad(object):
    def __init__(self, dad_name):
        self.dad_name = dad_name

class Parents(Mom, Dad):
    def __init__(self, mom_name, dad_name):
        Mom.__init__(self, mom_name)
        Dad.__init__(self,dad_name)

par = Parents('Mom', 'Dad')
print(par.mom_name)
print(par.dad_name)

output

Mom
Dad
1 голос
/ 04 ноября 2019

Вот так.


class Parents(Mom, Dad):

     def __init__(self, mom_name, dad_name):
         super(Mom, self).__init__(mom_name)
         super(Dad, self).__init__(dad_name)

Редактировать 1:

Приведенный выше код не работает, подходящим способом будет подкласс «Папа от мамы», а затем вставить его родителям вот так.

class Mom(object):
    def __init__(self, mom_name):
        self.mom_name = mom_name

class Dad(Mom):
    def __init__(self, dad_name, **kw):
        self.dad_name = dad_name
        super(Dad, self).__init__(**kw)

class Parents(Dad):

    def __init__(self, mom_name, dad_name):
        super(Parents, self).__init__(mom_name=mom_name, dad_name=dad_name)

p = Parents("mumy", "dady")       
print(p.mom_name)
print(p.dad_name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...