Is there a reference/alias/pointer in Python?

James Henderson james at logicalprogression.net
Fri Jul 23 03:56:40 CEST 2004


Daniel Eloff wrote:

> Maybe I’m still thinking in C++, but see if this makes sense to you.
> 
>  
> 
> I have a UserOptionsClass that contains program options. It has a 
> member, Users, that is a dictionary. I defined __getitem__ so that I can 
> access a users options via OptionsInstance[ ‘username’ ]. Now I defined 
> a second member, CurrentUser which is set to the Users [ 
> ‘current_users_username ‘ ]. I understand it’s ref counted, so that 
> doesn’t make a new copy, but doesn’t that also mean that if I change it, 
> it will be made into a new copy separate from Users [ 
> ‘current_users_username’ ] ? Is there any way I can change that behaviour?
> 
>  
> 
> Thanks,
> 
> -Dan
> 

Hi Dan,

Couldn't you just make CurrentUser a method that returns 
self.Users['current_users_username']?

If you really want CurrentUser to appear as an attribute (data member) 
you could make it a descriptor.  Something like:

class UserOptionsClass:
     def __init__(self, currentUser):
         self.Users = {'current_users_username': currentUser}
     def getCurrentUser(self):
          return self.Users['current_users_username']
     def setCurrentUser(self, name):
          self.Users['current_users_username'] = name
     CurrentUser = property(getCurrentUser, setCurrentUser)

HTH,
James




More information about the Python-list mailing list