Python: 是否可能在多重继承后合并两个__init__?

2024-05-02 20:50:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想让我的类父类(Mom,Dad)继承前两个类的init属性,这样我的输入就需要我写Mom\u name和Dad\u 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)

Tags: nameself属性objectinitdefclassprint
2条回答

像这样。你知道吗


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)

你可以这样实现它

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

相关问题 更多 >