[IronPython] Duck typing / builders

Hamilton Verissimo hammett at castlestronghold.com
Wed Dec 13 22:06:00 CET 2006


Appologies for not being specific. I was really looking forward to the
ability to allow invocations on undeclared methods. I'm not fluent in
python, but I think __call__ is the way to support that, for instance:

class Proxy(object):

  def __call__(self, method, arguments):
    record(method, arguments)

In Ruby I'd use method_missing in a similar fashion.

Thanks

On 12/13/06, Dino Viehland <dinov at exchange.microsoft.com> wrote:
> Yes, IronPython is completely duck typed, but I'm not certain how your x.bar & x.foo ties into that.
>
> It almost sounds like you want foo and bar to be properties.  You can do that with:
>
> class baz(object):
>         @property
>         def foo(self):
>                 print "I've been called"
>                 return 42
>         @property
>         def bar(self):
>                 print "Me too!"
>                 return 23
>
> a = baz()
> a.bar
>
> which will print "Me too!" and return 23.  You can then also do anything with this object from there, eg:
>
> a.xyz = 23
>
> Traditionally duck typing refers to "if it looks like a duck, and quacks like a duck, it's a duck".  That's more like:
>
> class balloon(object):
>         def blowup(self):
>                 print 'inflating balloon'
>
> class bomb(object):
>         def blowup(self):
>                 print 'exploding'
>
> def InflateIt(obj):
>         obj.blowup()
>
> InflateIt(bomb())
>         Or
> InflateIt(balloon())
>
> Both call the blowup method disregarding the fact that blowing up a ballon and blowing up a bomb are two rather different concepts - but they both look like the same duck.
>
>
> -----Original Message-----
> From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Hamilton Verissimo
> Sent: Wednesday, December 13, 2006 11:19 AM
> To: users at lists.ironpython.com
> Subject: [IronPython] Duck typing / builders
>
> Does IronPython support any form of duck typing? Ideally I want somethign like
>
> x.foo
> x.bar
>
> And record this invocations to generate, well, other things.
>
> Thanks
>
> --
> Cheers,
> hamilton verissimo
> hammett at castlestronghold.com
> http://www.castlestronghold.com/
> _______________________________________________
> users mailing list
> users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> _______________________________________________
> users mailing list
> users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>


-- 
Cheers,
hamilton verissimo
hammett at castlestronghold.com
http://www.castlestronghold.com/



More information about the Ironpython-users mailing list