Python analógico protocolo descritor em outros idiomas?

votos
8

Existe algo parecido com o protocolo descritor Python implementado em outros idiomas? Parece que uma boa maneira de aumentar a modularidade / encapsulamento sem inchaço implementação seu contendo class', mas eu nunca ouvi falar de uma coisa semelhante em quaisquer outros idiomas. É provável ausente de outras línguas devido à sobrecarga de pesquisa?

Publicado 29/08/2008 em 10:24
fonte usuário
Em outras línguas...                            


2 respostas

votos
4

Eu não ouvi falar de um equivalente direto também. Você provavelmente poderia conseguir o mesmo efeito com macros, especialmente em uma linguagem como Lisp que tem macros extremamente poderosos.

Eu não ficaria surpreso se outras línguas começam a incorporar algo semelhante, porque é tão poderoso.

Respondeu 29/08/2008 em 10:39
fonte usuário

votos
0

Ruby e C # ambos facilmente permitem criar acessores, especificando os métodos getter / setter para um atributo, bem como em Python. No entanto, este não é projetado para permitir que naturalmente você escrever o código para estes métodos em outra classe da maneira que Python permite. Na prática, eu não tenho certeza de quanto isso é importante, uma vez que cada vez que eu vi um atributo definido através do protocolo descritor sua sido implementado na mesma classe.

EDIT: Darn minha dislexia (refiro-me leitura descuidada). Por alguma razão eu sempre ler "descritor" como "decorador" e vice-versa, mesmo quando eu sou a pessoa digitando os dois. Vou deixar o meu post intacta uma vez que tem informações válidas, ainda que a informação que não tem absolutamente nada a ver com a questão.

O termo "decorador" em si é na verdade o nome de um padrão de projeto descrito no famoso "Design Patterns" livro. O artigo da Wikipedia contém muitos exemplos em diferentes linguagens de programação de uso decorador: http://en.wikipedia.org/wiki/Decorator_pattern

No entanto, os decoradores em que artigo orientada aos objectos; eles têm as classes que implementam uma interface pré-definida que permite que outro se comportam classe existente de forma diferente de alguma forma, etc. decoradores Python agir de forma funcional, substituindo uma função em tempo de execução com outra função, o que lhe permite modificar efetivamente / substituir essa função, inserir o código, etc.

Isto é conhecido no mundo Java como programação orientada a aspectos, eo compilador AspectJ Java permite que você faça esses tipos de coisas e compilar o código AspectJ (que é um super conjunto de Java) em bytecode Java.

Eu não estou bastante familiarizado com C # ou Ruby para saber o que a sua versão de decoradores seria.

Respondeu 08/09/2008 em 02:31
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more