[Pyrex] __getitem__ vs __getattr__?
    Joseph Koshy 
    jkoshy at FreeBSD.ORG
       
    Sat May 24 02:48:12 CEST 2003
    
    
  
Hi List,
This is a style issue perhaps: what are the pros and cons of making
an extension type act like a dictionary (via __getitem__) and 
appearing to have 'attributes' (via __getattr__)?
Lets say we have a data type `T' that is a C structure with fields
'field_1', 'field_2' etc.  We can make these fields accessible to Python
by supporting either attribute access and/or dictionary-style
access:
     t = TWrapped()
A)   x = t.field_1  	# via __getattr__ 
B)   x = t['field_1']	# via __getitem__
A plus point of allowing (B) would be that (print '%(field_1)s' % t) would
work.  However, option (A) appears to be more convenient for the programmer.
Are there any other performance or compliance issues that need to be
kept in mind when choosing between __getattr__ and __getitem__?   Would
it be too extravagant to support both styles of access?
-- 
Joseph Koshy                           <jkoshy at freebsd.org>
Developer, The FreeBSD Project         http://people.freebsd.org/~jkoshy/
    
    
More information about the Pyrex
mailing list