Python types

bruno at modulix onurb at xiludom.gro
Mon Mar 27 15:25:55 CEST 2006


Dennis Lee Bieber wrote:
> On Mon, 27 Mar 2006 01:34:14 +0200, Bruno Desthuilliers
> <bdesth.quelquechose at free.quelquepart.fr> declaimed the following in
> comp.lang.python:
> 
> 
>>Ok, so even if Python itself declares b and b2 (read: objects that names 
>>b and b2 are bound to) to be of the same type,  you cannot apply the 
>>myop() operation on b2...
> 
> 
>  
> 	Try looking at class-based objects as a form of CONTAINER... 

ouch, my ears :(

> Two
> containers can be of the same type, but the contents may be different.
> 
(snip)

This is mostly how OO is implemented in Python (in javascript too FWIW)
- but this is not the semantic of classes/objects in OO. The OO
translation of a type - at least according to the definition proposed by
the OP, and this is a pretty common definition - is a set of attributes
and methods. In most OO languages, this set is fixed for *all* the
instances of a class (subclassing not withstanding - and subclassing is
already a not so trivial problem in type theory).

What I wanted to point out is that, while class-based, Python in, in
this respect, closer to a prototype-based language.

In fact, since the set of attributes and methods of a given object may
change during the object's lifetime, it's type(s) may change too. So
saying that objects in Python "have a perfectly defined type" is perhaps
not really accurate, or at least requires further precisions (well, IMHO)

And I didn't even mention the possibility of changing the value of
anobject.__class__ at runtime !-)


-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb at xiludom.gro'.split('@')])"



More information about the Python-list mailing list