首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多重遗传与多级遗传的区别

多重遗传与多级遗传的区别
EN

Stack Overflow用户
提问于 2017-12-21 08:10:19
回答 3查看 1.7K关注 0票数 1

关于继承的一个尚未成熟的问题:-)

假设我有课

代码语言:javascript
复制
class A (B)
 {code}



class B(C)
 {code}

class C(object)
 def function1()
   {code}

我可以使用以下代码访问function1()

代码语言:javascript
复制
obj=A()
obj.function1()

既然我们有多级遗传,我们就可以得到它。

我相信我可以用多重继承来做同样的事情?喜欢

代码语言:javascript
复制
class A(B,C)  ?

这里有什么区别?

从哪里可以得到多层继承而不是多重继承的真实用例?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-12-21 08:19:59

代码语言:javascript
复制
class Base1:
    pass

class Base2:
    pass

class MultiDerived(Base1, Base2):
    pass

这是多重继承的一个例子。其中,单个类可以继承多个类。如果有类,则为多级

代码语言:javascript
复制
class A 
 {code}

class B (A)
 {code}

class C (B)
{code}

在这种情况下,继承类b时继承类C中的A类属性。因此,如果一个类继承了某个类,并且您不想继承超类的属性,而不是,则使用多重继承,则使用

有关图表的更多信息,请参阅以下链接:- https://www.programiz.com/python-programming/multiple-inheritance

票数 3
EN

Stack Overflow用户

发布于 2017-12-21 08:24:32

在您的特殊示例中,A类的两个定义都具有相同的效果。但是,如果将function1添加到B类中,则可以通过在定义A类时调整多个继承顺序来决定从A类调用哪个版本的function1。

所以你可以这样做:

代码语言:javascript
复制
class A(B,C)

或者像这样:

代码语言:javascript
复制
class A(C,B)
票数 1
EN

Stack Overflow用户

发布于 2017-12-21 08:27:01

多重继承的问题是函数重载。想象一下:

代码语言:javascript
复制
class A:
    def test(self):
        print("class A")

class B:
    def test(self):
        print("class B")

class C(A, B):
    pass

c = C()
c.test()

你能猜出输出是什么吗?(是class A)。在发生多级继承的情况下,您可以更多地控制重写方法。在使用多级继承时,您不太可能出错。您可以简单地忽略父类正在为您的子类实现相同的方法。但是老实说,只要您know如何处理python中的多个继承,并且您知道它的问题--使用这两者都应该很好。检查官方python文档是否具有多重继承。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47920589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档