Mukund Chavan wrote:
Hi,

I was trying to get a list of Class Objects. The Class itself has string fields and a dictionary that is initialized as a part of the "__init__"

No it doesn't. It has a dictionary that is initialised *once*, when the class is defined. From that point on, every instance just modifies the same shared dictionary:

class Person(object):
   """__init__() functions as the class constructor"""
   personAttrs={"'num1":"","num1":""}

This is a "class attribute", stored in the class itself, and shared between all instances.


   def __init__(self, name=None, job=None, quote=None, num1=None, num2=None):
      self.name = name
      self.job = job
      self.quote = quote
      self.personAttrs["num1"]=num1
      self.personAttrs["num2"]=num2

This merely modifies the existing class attribute. You want something like this instead:

class Person(object):
    def __init__(self, name=None, job=None, quote=None,
                 num1=None, num2=None
                ):
        self.name = name
        self.job = job
        self.quote = quote
        self.personAttrs = {'num1': num1, 'num2': num2}

This creates a new dictionary for each Person instance.

But why are you doing it that way? Each Person instance *already* has its own instance dictionary for storing attributes. You don't need to manage it yourself -- just use ordinary attributes, exactly as you do for name, job, and quote.

class Person(object):
    def __init__(self, name=None, job=None, quote=None,
                 num1=None, num2=None
                ):
        self.name = name
        self.job = job
        self.quote = quote
        self.num1 = num1
        self.num2 = num2



--
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to