On Feb 28, 1:26 pm, "Luis M. González" <[EMAIL PROTECTED]> wrote: > I've come across a code snippet in www.rubyclr.com where they show how > easy it is to declare a class compared to equivalent code in c#. > I wonder if there is any way to emulate this in Python.
I posted like 10 minutes ago, but it looks like it didn't go through. The ruby code is not an easy way to declare a class, it is a ruby class for creating c-like struct objects. This is the basic idea behind the ruby Struct class (but this is quick and dirty, the real implementation is different and done in c, but you should get the basic idea): class Struct2 def initialize(*args) @@attrs = [] args.each { |arg| eval("class << self; attr_accessor :#{arg} end") @@attrs.push(arg) } end def new(*args) args.each_index { |i| eval("self.#{@@attrs[i]}=args[i]") return self } end end Person = Struct2.new(:name) bob = Person.new('bob') puts bob.name A python equiv. would be something like: class Struct(): def __init__(self, *args): self.attrs = [] for arg in args: setattr(self, arg, None) self.attrs.append(arg) def __call__(self, *args): for i in range(len(args)): setattr(self, self.attrs[i], args[i]) return self Person = Struct('name') bob = Person('bob') print bob.name Regards, Jordan -- http://mail.python.org/mailman/listinfo/python-list