Your requirement seems interesting. Without asking much more about your intention, you can use weakrefs to keep track of the references.
Here's a sample code for your requirement;
from collections import defaultdict
import weakref
_ref_tracker = defaultdict(list)
class TrackRefs(object):
def __init__(self):
_ref_tracker[self.__class__].append(weakref.ref(self))
def get_objs(self):
for ref in _ref_tracker[self.__class__]:
if ref():
yield ref()
class User(TrackRefs):
def __init__(self, name, id):
super(User, self).__init__()
user1 = User('Harke', 6)
user2 = User('Birkhe', 9)
user3 = User('Chyante', 69)
for obj in User("", "").get_objs(): #remember i am using an extra object here
You could have easily used default dictionary class in python to keep track of username and ids easily. I would rather use a simple dictionary as a member variable than keep track of object references ;) .
--
Kailash Budhathoki