automatically assigning names to indexes

Peter Otten __peter__ at web.de
Tue Jul 12 08:31:01 CEST 2005


simonwittber at gmail.com wrote:

> However, I'd like to add attribute access (magically), so I can do
> this:
> 
> v = Vector((1,2,3))
> print v.x
> print v.y
> print v.z
> 
> as well as:
> 
> print v[0]
> print v[1]
> print v[2]
> 
> Has anyone got any ideas on how this might be done?
 
>>> class Vector(tuple):
...     x = property(lambda self: self[0])
...     y = property(lambda self: self[1])
...     z = property(lambda self: self[2])
...
>>> Vector("abc")
('a', 'b', 'c')
>>> Vector("abc").z
'c'
>>> Vector("abc")[2]
'c'

However, no magic is involved.

Peter




More information about the Python-list mailing list