2014-09-03 3 views
1

나는 Dill 패키지로 실험하고 있는데, 구체적으로 모듈을 탐지하고 지시 대상, 리퍼러, 부모 및 어린이가 의미하는 바를 직관적으로 이해하는 데 문제가 있습니다.Referrers, Referents, Parents and Children

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 지시 대상이며 MyClassa_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 

사람이 참조, 상속과 용기가 할과 돈 곳의 명확한 설명을 제공 할 수 있습니다 ' 일치합니까?

+1

... 무엇이 당신의 질문입니까?! 여러분은 상속을 참고 문헌과 혼합하고있는 것처럼 보입니다. – jonrsharpe

+1

당신이 우리 엄마와 결혼하고 당신의 어머니와 결혼한다면 당신은 나의 아버지이고 당신의 아버지입니다. 이것은 당신을 당신의 아버지의 아버지와 당신의 할아버지가되게합니다! – Korem

+1

또한 컨테이너와 해당 요소를 혼합하여 혼합합니다. – chepner

답변

2

python에서 상속은 클래스 개체와 클래스 인스턴스 개체 사이에 포인터 관계를 만듭니다. 예를 들어, 클래스 인스턴스가 먼저 자신의 __dict__을 확인한 다음 누락 된 속성을 찾기 위해 클래스 정의를 다시 가리 킵니다. 마찬가지로, 인스턴스 메소드는 클래스 메소드에 적용되는 부분 클래스로 간주되어 기본 클래스 메소드에 대한 포인터 관계를 다시 제공합니다. 파이썬에서는 상속이 객체 자체에서 어떤 속성을 찾을 수 없을 때보 다 상속은 포인터 속성을 통해 빌드 된 누락 된 속성에 대한 부모 (mro)를 다시 쳐다 본다.

상속 및 포인터 참조가 동일한 정도입니다. 포인터 참조는 훨씬 더 일반적입니다.