I'm coming to Python from other programming languages. I like to
hide all attributes of a class and to only provide access to them
via methods. Some of these languages allows me to write something
similar to this

int age( )
{
  return theAge
}

void age( x : int )
{
  theAge = x
}

(I usually do more than this in the methods). I would like to do
something similar in Python, and I've come up with two ways to do
it: The first one uses the ability to use a variable number of
arguments ... not very nice. The other is better and uses 
__setattr__ and __getattr__ in this way:

class SuperClass:
        def __setattr__( self, attrname, value ):
                if attrname == 'somevalue':
                        self.__dict__['something'] = value
                else:
                        raise AttributeError, attrname

        def __str__( self ):
                return str(self.something)

class Child( SuperClass ):
        def __setattr__( self, attrname, value ):
                if attrname == 'funky':
                        self.__dict__['fun'] = value
                else:
                        SuperClass.__setattr__( self, attrname, value )

        def __str__( self ):
                return SuperClass.__str__( self ) + ', ' + str(self.fun)

Is this the "Pythonic" way of doing it or should I do it in a different
way or do I have to use setX/getX (shudder)

                                                        


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

Reply via email to