파이썬에서는 각 객체가 이고 하나는이다. 객체의 "속성"은 메쏘드, 간단한 참조가 될 수있다. descriptors (일반 속성이 인스턴스 또는 클래스에있을 수 있지만 메소드를 합성하는 설명자와 같은 함수 포함)은 다른 객체 (호출 가능 여부)에 저장되거나 플라이에서 합성됩니다 클래스가 아니라 인스턴스입니다. 따라서 특히 "특수 메소드"는 인스턴스가 아닌 클래스에 정의 된 경우에만 특별합니다. 특성 처리 내장 함수와 특수 메서드 (getattr
, setattr
,, __setattr__
, ...)는 "일반 특성"을 참조하든 아니든 개체의 단일 네임 스페이스에서 동일한 방식으로 작동합니다. (파이썬 컴파일러가 알고 (도주의)하지 않습니다, 당신은 참조 a.b
등을 수행 할 수 있습니다
핵심은 모든 개체 a
를 들어, 파이썬, a.b
는 방법 (또는 호출 기타) 여부를 수 있다는 것이다 예를 들어, 인수로 전달하거나, 결과로 반환하거나, 목록에 추가하는 등의 작업은 a.b
을 호출하지 않습니다. a.b
을 호출하려는 경우 (시도 및 호출) 인수없이 호출하려면 a.b()
을 사후 수정 괄호로 명시 적으로 지정합니다.
Ruby에서 객체의 메소드와 속성은 별도의 네임 스페이스에 있습니다 (따라서 메소드와 속성이 같은 객체를 가질 수 있습니다. 이름은 같지만 파이썬에서는이를 사용할 수 없습니다). - c=a.b
은 속성 참조를 취할 수도 있고, b
이 메소드와 속성을 모두 a
에 지정하면, 사용법을 명확하게하기 위해 어떤 경험적 규칙이 사용되는지는 기억하지 않습니다.). 따라서 메소드 참조 (예 : 일부 컨테이너에서 숨기거나 인수 또는 리턴 값으로 사용)를 호출하고 나중에 호출을 수행하려면 다른 구문을 사용하십시오.
Smalltalk도 Ruby와 같이 별도의 네임 스페이스를 가지고 있지만 특정 객체의 "비 메소드"속성을 참조 할 수는 없습니다 (각 객체는 자체 속성 만 "인식"합니다). 따라서이 모호성은 발생하지 않습니다 특정 메시지를 추출하여 나중에 "메소드 참조"라고 부름).
VPRI의 객체 모델, 자체 정의 환경 및 기타 기능에 대한 작업 중 일부는 마음이 날 것입니다. –
http://docs.python.org/reference/과 같은 곳에서 요약이 유용하지 않거나 불완전하거나 부정확하다고 말하는 것입니까? 언어 매뉴얼의 문제점은 무엇입니까? 왜 이렇게 광범위하고 거대한 질문을 던지십니까? –
Ruby 내부에 대한 이야기 비디오 (객체 모델에 대한 몇 가지 참고 사항) : http://mtnwestrubyconf2008.confreaks.com/11farley.html – miku