Python:如何从子实例

时间:2017-07-30 11:19:38

标签: python python-2.7 inheritance multiple-inheritance

如果我有两个子类都继承自同一个父类

    class Parent(object):
        def __init__(self):
            self.name = 'parent'
            self.position = 0

    class FirstChild(Parent):
        def __init__(self):
            self.speed = 1

    class SecondChild(Parent):
        def __init__(self):
            self.final = 100

        def remaining_distance(self):
            print('Remaining distance is %i.' %(self.final - self.position)

现在我从FirstChild定义一个实例。

    Child1 = FirstChild()

我想在Child1上使用SecondChild中的方法。我该怎么办? 我知道

    SecondChild.remaining_distance(Child1) 

会给我一条错误信息。是否有任何代码无误地达到了预期的效果?

谢谢:)

1 个答案:

答案 0 :(得分:1)

创建子类时,实例也是父类的实例 例如在文件中:

    class Foo(object):
        def __init__(self):
            print "foo init"

    class Bar(object):
        def __init__(self):
            print "bar init"

    class FooBar(Foo, Bar):
        def __init__(self):
            print "foobar init"
            super(FooBar, self).__init__()

    a = FooBar()

<强>输出:

    foobar init
    foo init

但这并不意味着Bar类不会被继承。最终FooBar类的实例也是Bar类和Foo类的实例。

print isinstance(a,FooBar)
print isinstance(a,Foo)  
print isinstance(a,Bar) 

<强>输出

True
True
True

在您的示例中,First和Second子节点都具有相同的父类,但是它们只能共享父类变量或方法,因为它们都共享父类范围,两个子节点都不能共享它们自己的方法或变量,因为他们没有分享他们的范围