2017-07-30 32 views
0

得到父母實例。如果我有兩個子類都從同一個父類的Python:如何從一個子實例

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) 

會給我一個錯誤信息。有沒有錯誤地達到預期效果的代碼?

謝謝:)

+2

這不能做到,FirstChild和SecondChild不共享任何東西。你可以把remaining_distance函數放入Parent嗎? – MeterLongCat

+0

你不能,'Child1'不是'SecondChild'的一個實例。 – aristotll

+1

'remaining_distance'顯然應該是'Parent'或'FirstChild'的一種方法。 – DeepSpace

回答

0

當你創建一個子類的實例也是其父 類的例如文檔中的實例:

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 

在您的例子,前兩個孩子都擁有相同的父類,但讓他們只能共享父類變量或方法,因爲這兩者的父類的範圍內,兩個孩子都不能分享他們自己的方法或變量,因爲他們沒有分享他們的範圍

相關問題