Factory for Struct-like classes

eliben eliben at gmail.com
Wed Aug 13 12:43:51 EDT 2008


Hello,

I want to be able to do something like this:

Employee = Struct(name, salary)

And then:

john = Employee('john doe', 34000)
print john.salary

Basically, Employee = Struct(name, salary) should be equivalent to:

class Employee(object):
  def __init__(self, name, salary):
    self.name = name
    self.salary = salary

Ruby's 'Scruct' class (http://ruby-doc.org/core/classes/Struct.html)
does this. I suppose it can be done with 'exec', but is there a more
Pythonic way ?

Thanks in advance

P.S.  I'm aware of this common "pattern":

class Struct:
    def __init__(self, **entries):
        self.__dict__.update(entries)

Which allows:

john = Struct(name='john doe', salary=34000)
print john.salary

But what I'm asking for is somewhat more general.





More information about the Python-list mailing list