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

Reply via email to