Python component model

Edward Diener No Spam eldiener_no_spam_here at
Mon Oct 9 19:59:18 CEST 2006

The definition of a component model I use below is a class which allows 
properties, methods, and events in a structured way which can be 
recognized, usually through some form of introspection outside of that 
class. This structured way allows visual tools to host components, and 
allows programmers to build applications and libraries visually in a RAD 

The Java language has JavaBeans as its component model which allows Java 
applications to be built in a visual RAD way. Microsoft's .Net has a 
component model built-in to its .Net class libraries as well as 
supported by CLR which allows .Net applications to be built visually 
using components created in any .Net supported language.

With Python things are different. There is no single component model 
which allows Python developers to build components which will be used 
and recognized by the various RAD Python tools on the market. Instead a 
developer must create a slightly different set of Python classes for 
each RAD Python tool. This is the situation despite Python's having 
easily as much functionality, if not much more, as Java or .Net 
languages such as C#, VB, or C++/CLI for creating components, and for 
allowing visual tools to introspect the properties, methods, and events 
of Python classes.

I believe that Python should have a common components model for all RAD 
development environments, as that would allow the Python programmer to 
create a set of classes representing components which would work in any 
environment. I want to immediately point out that components do not 
simply mean visual GUI components but what may be even more important, 
non-visual components. Having used RAD development environments to 
create applications, I have found such environments almost always much 
better than coding complex interactions manually, and I believe that 
visual development environments are almost a necessity in today's world 
of large-scale, multi-tier, and enterprise applications.

Has there ever been, or is there presently anybody, in the Python 
developer community who sees the same need and is working toward that 
goal of a common component model in Python, blessed and encouraged by 
those who maintain the Python language and standard modules themselves ?

More information about the Python-list mailing list