On Sun, 12 Jun 2005 11:54:52 +0200, Kalle Anke <[EMAIL PROTECTED]> wrote:

>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)

I'm totally new to Python myself, but my understanding is that
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to