Python:多重继承后是否可以合并两个__init __?

问题描述 投票:0回答:2

我希望我的班级父母(妈妈,爸爸)继承先前两个班级的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)
python class oop
2个回答
2
投票

您可以通过这种方式实现

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)

输出

Mom
Dad

1
投票

喜欢这个。


class Parents(Mom, Dad):

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

编辑1:

上面的代码不起作用,一种合适的方法是从Mum继承父亲,然后像这样粘贴到父母。

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)
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.