走同样的路,发现不同的人生
우선 분명히 말씀드리자면
__get__ 및 __set__ 메소드를 모두 포함하는 설명자를 데이터 설명자
__get__ 메소드만 포함하는 설명자를 비데이터 설명자
그런 다음 obj.attr을 예로 들어 Python에서 속성 검색 순서를 명확히 합니다.
attr이 __class__, __doc__ 및 dir(obj)의 다른 속성인 경우 직접 찾습니다.
obj.__class__.__dict__에서 attr이라는 데이터 설명자를 찾고 attr.__get__(obj, obj.__class__)를 반환하지만 찾을 수 없습니다. . obj의 상위 클래스와 상위 클래스에서 데이터 설명자를 계속 검색합니다.
)을 찾을 수 없으면 상위 클래스와 상위 클래스에서 설명자를 계속 찾습니다.
를 찾고 attr.__get__(obj, obj.__class__)를 반환합니다.
Kid.name:instance<-None, owner<-Kidf .name:인스턴스< ;-f, 소유자<-아버지
우선 분명히 말씀드리자면
__get__ 및 __set__ 메소드를 모두 포함하는 설명자를 데이터 설명자
__get__ 메소드만 포함하는 설명자를 비데이터 설명자
그런 다음 obj.attr을 예로 들어 Python에서 속성 검색 순서를 명확히 합니다.
attr이 __class__, __doc__ 및 dir(obj)의 다른 속성인 경우 직접 찾습니다.
obj.__class__.__dict__에서 attr이라는 데이터 설명자를 찾고 attr.__get__(obj, obj.__class__)를 반환하지만 찾을 수 없습니다. . obj의 상위 클래스와 상위 클래스에서 데이터 설명자를 계속 검색합니다.
)을 찾을 수 없으면 상위 클래스와 상위 클래스에서 설명자를 계속 찾습니다.
를 찾고 attr.__get__(obj, obj.__class__)를 반환합니다.
Kid.name:instance<-None, owner<-Kid
f .name:인스턴스< ;-f, 소유자<-아버지