Hi there,
I'm facing some strange things - but maybe only me is strange - anyway...

i wrote the following code:


+++
class T(object):
        def __init__(self,name='',port=80):
                self.name=name
                self.port=port
+++

looks fine - to me.

Now I can do:


 >>> t = T(name="test",port=8080)
 >>> print t
<__main__.T object at 0x00BE36D0>

 >>> print t.name
test
 >>> dir(t)
['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', 
'__hash__', '__init__', '__module__', '__new__', '__reduce__', 
'__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__', 
'name', 'port']

Everything ok.

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

where

 >>> dir(T)
['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', 
'__hash__', '__init__', '__module__', '__new__', '__reduce__', 
'__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__']

is ok, also.

But, then surprise:
 >>> t = T(name="test123",port=443)
 >>> dir(t)
[]

What the hell is going wrong here ?
I'm running Python 2.4.2 from python.org on Windows XP SP2, all patches 
applied.

Thx in advance.

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to