eliben wrote:
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.
That's about as "general" as it gets ;-). It works for any number/type of attribute. I would probably make it a new-style class by subclassing object, but for simulating a generic row container, this is quite good. You might extend it with a __str__ method, __len__ method, make it an iterator, etc.
but that is quite easy. -Larry -- http://mail.python.org/mailman/listinfo/python-list
