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

Reply via email to