关于继承的一个尚未成熟的问题:-)
假设我有课
class A (B)
{code}
class B(C)
{code}
class C(object)
def function1()
{code}我可以使用以下代码访问function1()
obj=A()
obj.function1()既然我们有多级遗传,我们就可以得到它。
我相信我可以用多重继承来做同样的事情?喜欢
class A(B,C) ?这里有什么区别?
从哪里可以得到多层继承而不是多重继承的真实用例?
发布于 2017-12-21 08:19:59
class Base1:
pass
class Base2:
pass
class MultiDerived(Base1, Base2):
pass这是多重继承的一个例子。其中,单个类可以继承多个类。如果有类,则为多级。
class A
{code}
class B (A)
{code}
class C (B)
{code}在这种情况下,继承类b时继承类C中的A类属性。因此,如果一个类继承了某个类,并且您不想继承超类的属性,而不是,则使用多重继承,则使用。
有关图表的更多信息,请参阅以下链接:- https://www.programiz.com/python-programming/multiple-inheritance
发布于 2017-12-21 08:24:32
在您的特殊示例中,A类的两个定义都具有相同的效果。但是,如果将function1添加到B类中,则可以通过在定义A类时调整多个继承顺序来决定从A类调用哪个版本的function1。
所以你可以这样做:
class A(B,C)或者像这样:
class A(C,B)发布于 2017-12-21 08:27:01
多重继承的问题是函数重载。想象一下:
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文档是否具有多重继承。
https://stackoverflow.com/questions/47920589
复制相似问题