Uma boa introdução sobre o tema é esse texto:
http://regebro.wordpress.com/2007/11/16/a-python-component-architecture/
Fiz uma tradução deste texto e coloquei no Wiki da nossa comunidade:
http://www.python.org.br/wiki/ArquiteturaDeComponentes
[ ]s
Luciano
2010/1/22 Vinicius Mendes <vbme...@gmail.com>:
> --
> Django Brasil em Google Groups
> <http://groups.google.com.br/group/django-brasil>
> Associe-se à Python Brasil e suporte nossa comunidade!
> <http://associacao.python.org.br/>
--
"""
Many were increasingly of the opinion that they'd all made a big
mistake in coming down from the trees in the first place. And some
said that even the trees had been a bad move, and that no one should
ever have left the oceans. (DA/HHGTTG)
"""
--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>
Quem tiver interesse neste assunto e usa Python realmente deve ler o
texto do Lennart Regebro que eu citei. Vou reproduzir apenas os dois
primeiros parágrafos, para vocês avaliarem se é relevante ou não:
"""
Ao construir grandes frameworks você muitas vezes deseja que tudo seja
facilmente plugável e extensível. Os objetos precisam ser capazes de
interagir uns com os outros mesmo quando esta interação não está
prevista inicialmente. Criar este tipo de flexibilidade não é muito
difícil, especialmente em uma linguagem dinâmica como Python, mas se
você tem que criar um framework para plug-ins toda vez que precisa de
um, você acaba não fazendo isso a menos que seja realmente muito
necessário.
Assim, é bom ter uma forma padrão para a interação entre objetos e
para que eles possam se inspecionar, e uma forma que você possa usar
toda vez que precisar. Resumindo, você precisa de uma arquitetura de
componentes. Felizmente, já existe uma para Python, que foi bem
implementada, bem testada e vem sendo usada há anos. Seu nome é Zope
Component Architecture.
"""
O resto está aqui:
http://www.python.org.br/wiki/ArquiteturaDeComponentes
[ ]s
Luciano
--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>
Klaus, isso é interessante e pode ser útil no projeto que estou programando.
Você pode dar uma referência mais precisa ou um link?
Valeu!
[ ]s
Luciano
Pessoal,Desculpa pela demora em responder aqui, mas é que sexta feira eu viajei e fiquei sem acesso à internet. Obrigado a todos que responderam.Luciano, obrigado pelo link, eu li o artigo, achei interessante, mas ainda me pareceu muito imitação do java, e implementado de uma forma que não me parece python nem java. Esse negocio de a interface ser um atributo da classe, e você ter que fazer casts, isso não é a cara do python e seu duck typing.Igor, o que eu quero é mais ou menos isso: injetar atributos em models antes do syncdb. Por exemplo, eu tenho uma notícia e aí em um site a notícia tem foto e em outro ela não tem foto. Então eu queria fazer uma aplicação genérica que ela possibilitasse que eu inserisse o campo de foto na notícia. Eu consigo fazer isso hoje utilizando generic relations, mas acho que deixa a aplicação mais lenta. Pelo que vi do seu exemplo do django-diario integrando com o django-tagging, me pareceu muito trabalhosa a solução. Em vários lugares do código exitem ifs para decidir se vai incluir um trecho de código ou não. Eu fiz, também com generic relations, uma app que transforma integra qualquer model com o django-tagging, mas cai no mesmo problema: generic relation é mais lento. Se eu pudesse em tempo de execução alterar o model da app seria bem mais interessante. Extender o model atual e colocar o que eu criei no lugar dele, já que o django não foi pensado pra ser utilizado com injeção de dependências, isso se torna complicado.