On Friday 28 October 2005 14:26, Stefan Sonnenberg-Carstens wrote: > Hi there, [..clip..] > Now, I do this: > > class T(object): > def __init__(self,name='',port=80): > self.name=name > self.port=port > def __getattribute__(self,key): > if key=='somekey': > return None [..snip..] > But, then surprise: > >>> t = T(name="test123",port=443) > >>> dir(t) > > [] > > What the hell is going wrong here ?
__getattribute__ is returning None in all cases and dir() is converting None to []. Anyway, you should have done this: py> class T(object): ... def __init__(self,name='',port=80): ... self.name=name ... def __getattribute__(self,key): ... if key=='somekey': ... return None ... else: ... return object.__getattribute__(self, key) ... py> t = T(name="test123",port=443) py> dir(t) ['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__', 'name'] James -- James Stroud UCLA-DOE Institute for Genomics and Proteomics Box 951570 Los Angeles, CA 90095 http://www.jamesstroud.com/ -- http://mail.python.org/mailman/listinfo/python-list