2014-09-03 1 views
1

Я экспериментирую с пакетом Dill, в частности, это модуль обнаружения и имеет некоторые проблемы с интуитивным пониманием того, что понимается референтами, референтами, родителями и детьми.Referrers, Referents, Родители и дети

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] 

ли an_instance, an_instance2, an_instance3 референтов a_list и бы 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

+1

Если ты женишься на моей матери, и я женюсь на твоей матери, ты мой отец, а я твой отец. Это делает тебя отцом твоего отца и твоего деда! – Korem

+1

Вы также объединяете контейнеры и их элементы в микс. – chepner

ответ

2

В python наследование создает связь между объектом класса и объектом экземпляра класса. Например, экземпляр класса сначала проверяет его собственный __dict__, а затем указывает на его определение класса, чтобы найти отсутствующий атрибут. Аналогичным образом, методы экземпляров можно рассматривать как частичные, которые применяются к методам класса, что опять-таки дает отношение указателя к методу базового класса. С python наследование - это немного больше, чем когда объект не может найти какой-либо атрибут внутри себя, он обращается к родительскому (в mro) отсутствующему атрибуту - эта иерархия строится через отношение указателя.

Это то, что ссылки наследования и указатели одинаковы. Ссылки указателей гораздо более общие.

Смежные вопросы