다른 언어로 구현 된 Python 설명자 프로토콜과 같은 것이 있습니까? 그것은 포함하는 클래스의 구현을 bloating하지 않고 모듈화/캡슐화를 향상시키는 좋은 방법 인 것처럼 보이지만 다른 언어로는 비슷한 것을 들어 본 적이 없습니다. 조회 오버 헤드로 인해 다른 언어에 빠질 가능성이 있습니까?다른 언어의 파이썬 설명자 프로토콜이 유사합니까?
답변
나는 직접적인 것에 대해서도 들어 본 적이 없다. 매우 강력한 매크로를 가진 Lisp과 같은 언어를 사용하면 특히 매크로에서 동일한 효과를 얻을 수 있습니다.
다른 언어가 너무 강력하기 때문에 유사한 언어가 포함되어 있으면 놀랄 일도 아닙니다.
Ruby와 C# 모두 Python에서와 마찬가지로 속성에 대해 getter/setter 메서드를 지정하여 쉽게 접근자를 만들 수 있습니다. 그러나 이것은 자연스럽게 파이썬이 허용하는 방식으로 다른 클래스에서이 메소드의 코드를 작성할 수 있도록 설계되지 않았습니다. 실제로, 나는이 문제가 얼마나 중요한지 알지 못한다. 왜냐하면 디스크립터 프로토콜을 통해 정의 된 속성이 매번 동일한 클래스에서 구현 된 것을 보았 기 때문이다.
EDIT : 내 실독증을 마셔 라 (부주의 한 독서를 의미 함). 웬일인지 필자는 항상 "descriptor"를 "decorator"로 읽었고, 그 반대도 마찬가지였습니다. 둘 다 입력하는 경우에도 마찬가지였습니다. 그것이 유효한 정보를 가지고 있기 때문에 나는 내 지위를 그대로 남겨 둘 것이다. 비록 그 질문에 절대적으로 아무런 관련이없는 정보 임에도 불구하고.
"데코레이터"라는 용어 자체는 실제로 유명한 "디자인 패턴"책에 설명 된 디자인 패턴의 이름입니다. Wikipedia 기사에는 데코레이터 사용법의 여러 프로그래밍 언어로 된 많은 예가 포함되어 있습니다. http://en.wikipedia.org/wiki/Decorator_pattern
그러나 기사의 데코레이터는 객체 지향적입니다. 그들은 기존의 다른 클래스가 어떤 식 으로든 다르게 동작하도록 미리 정의 된 인터페이스를 구현합니다. 파이썬 장식자는 런타임에 함수를 다른 함수로 대체하여 함수를 효과적으로 수정/대체 할 수있는 기능적 방식으로 작동합니다.
이것은 Aspect-Oriented 프로그래밍으로 알려져 있으며 AspectJ Java 컴파일러는 이러한 종류의 작업을 수행하고 Java의 상위 세트 인 AspectJ 코드를 Java 바이트 코드로 컴파일 할 수있게한다.
나는 데코레이터의 버전이 무엇인지 알기에는 C#이나 루비에 익숙하지 않다.
- 1. 설명자 마술없이 파이썬 속성 조회?
- 2. 클래스간에 값을 공유하는 파이썬 설명자
- 3. 파이썬 프로그래밍 언어의 어휘 분석
- 4. PEAR 다른 언어의 대체물
- 5. 다른 언어의 OpenCV 성능
- 6. 다른 언어의 StyleCop
- 7. 다른 언어의 Ipad 앱
- 8. 다른 언어의 프로그램 병합
- 9. 다른 언어의 자바 스크립트를 사용하십시오
- 10. 다른 아키텍처에서의 C 언어의 크기
- 11. 다른 언어로 한 언어의 음성
- 12. 셰이프 설명자
- 13. PING에 어떤 프로토콜이 사용됩니까?
- 14. 어떻게 다른 파이썬 버전
- 15. Wordpress is_first_page() 또는 유사합니까?
- 16. gitsharp 클론 http 프로토콜이 실패했지만 git 프로토콜이 성공했습니다! 왜?
- 17. 왜 POP3 프로토콜이 살아남습니까?
- 18. 알림을위한 프로토콜이 필요합니까?
- 19. link_to : 프로토콜이 작동하지 않습니다.
- 20. 소셜 네트워킹 프로토콜이 있습니까
- 21. webViewDidFinishLoad : 프로토콜이 누락 되었습니까?
- 22. HTML5 URL 입력란에 프로토콜이 없음
- 23. 다른 언어의 정적 변수에 해당하는 PHP는 무엇입니까?
- 24. 다른 언어의 이름에서 월 번호 가져 오기
- 25. 다른 언어가 비어있는 경우 언어의 값을 선택하십시오.
- 26. WYSIWYG 용 다른 언어의 사용자 인터페이스
- 27. 다른 언어의 ObjectPascal 식별자 이름 지정 스타일
- 28. 다른 쉘 언어의 범위 지정 문제가 있습니까?
- 29. 다른 언어의 키보드를 자동으로 선택 - iphone
- 30. C/C++ 또는 다른 언어의 SOCKS?
[설명자 프로토콜] (http://docs.python.org/ref/descriptors.html)은 [장식 패턴] (http://www.python.org/dev/peps/)과 동일하지 않습니다. pep-0318 /)을 Python에서 - 나는 동적으로 "프록시 화"된 다른 객체의 속성에 객체 인스턴스를 만드는 기능을 언급합니다. – cdleary