2014-09-03 63 views
1

我正在試驗Dill軟件包,特別是它的檢測模塊,並且直觀地理解指代者,查閱者,父母和孩子的含義。Referrers,Referents,Parents and Children

A reference是一個可以訪問某些數據的值。

而指示對象是referred to,對吧?

所以在下面的代碼:

class MyClass: 
    """A simple example class""" 
    i = 12345 
    def f(self): 
     return 'hello world' 

an_instance = MyClass() 
an_instance2 = MyClass() 
an_instance3 = MyClass() 

a_list = [an_instance, an_instance2, an_instance3] 

a_listan_instance, an_instance2, an_instance3指稱,並會在MyClass也成爲a_list所指對象,但進一步向上鍊深度的一個水平?

所以,用->標誌着參考,將在鏈所指樣子的:

a_list -> an_instance -> MyClass 

這會被視爲:

grandchild -> child -> Parent 

相反,是a_list引薦an_instance以及an_instance2, an_instance3和在另一個深度級別,MyClass

製作的鏈引薦:

MyClass -> an_instance -> a_list 

,並將這也可以設想:

parent -> child -> grandchild 

有人能提供在何處引用,繼承和容器做,不要解釋清楚」 t重合?

+1

...你的問題是什麼?你似乎在將繼承和引用混淆在一起。 – jonrsharpe 2014-09-03 18:47:22

+1

如果你嫁給我的母親,我娶了你的母親,那麼你是我的父親,我是你的父親。這使你成爲你父親和你自己的祖父的父親! – Korem 2014-09-03 18:55:52

+1

您也正在將容器及其元素混合在一起。 – chepner 2014-09-03 19:02:11

回答

2

在python中,繼承建立了類對象和類實例對象之間的指針關係。例如,一個類實例首先檢查它自己的__dict__然後指向它的類定義來查找任何缺少的屬性。同樣,實例方法可以看作是應用於類方法的部分,同樣給出了基礎類方法的指針關係。使用python,繼承只是當對象在自己內部找不到某些屬性時,它會回顧父對象(在mro中)缺少的屬性 - 該層次結構是通過指針關係構建的。

這是關於繼承和指針引用是相同的程度。指針參考更爲一般。