[Python-ideas] Message passing syntax for objects

Jeff Jenkins jeff at jeffreyjenkins.ca
Tue Mar 19 20:41:34 CET 2013

Does __getattribute__ and __call__ basically accomplish this?  You pass a
"message name" to an object which it then uses to route to a handler which
takes a tuple "message body" to process the message.  It just happens that
the syntax is obj.message_name(message, body, parts) instead of using << or

On Tue, Mar 19, 2013 at 11:58 AM, Ian Cordasco
<graffatcolmingov at gmail.com>wrote:

> On Tue, Mar 19, 2013 at 11:33 AM, Ethan Furman <ethan at stoneleaf.us> wrote:
> > I don't disagree with you, Nick, but I don't think that's what the OP is
> > looking for, either.  Even using call syntax, it seems to me the OP would
> > still
> > only be sending one type of message, with no arguments, no
> differentiation,
> > no choices.
> I understand OP wants to be able to send anything, but he seems to be
> disregarding how << and >> are currently implemented on objects (via
> __lshift__ and __rshift__ respectively). Each of those can be made in
> a custom fashion by OP (or anyone else) but the question then becomes,
> how do you add extra parameters (assuming you want them), i.e., how do
> you do:
>   obj << 4, *extra_args
> I think (because I don't have a way of testing it right now) that
> you'd get an error for trying to expand extra_args in the creation of
> a tuple, regardless of the signature of __lshift__. Even if you didn't
> do that, I think python would interpret that as the creation of a
> tuple, i.e., the result of obj << 4 with the rest of the arguments.
> > To use the OP's own example:
> >
> >    some_collection(42)
> >
> > would add 42 to the collection... but we have no say in where, or how.
>  In
> > fact,
> > using call() notation we have less than the OP's proposal as his proposal
> > has a
> > one-way in and a one-way out, but an argument-less* call can only provide
> > one of
> > those two options.
> >
> > --
> > ~Ethan~
> >
> > *By argument-less I mean we can only give one thing to call.
> And if we do this with the current implementation of python you can
> still only give one thing to call (assuming I'm correct with my above
> example). We would have to fundamentally change python and how it
> interprets those special cases (again basing the statement on my above
> assumptions/intuition). I'm sure in another language I would find this
> feature to be interesting or even appreciate it, but I don't think it
> is either very pythonic or useful in python. I'm also wondering if
> this is just a very well done troll since OP has yet to back any of
> his own examples which he thinks others are choosing to make his life
> difficult.
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> http://mail.python.org/mailman/listinfo/python-ideas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20130319/a99cd0b3/attachment.html>

More information about the Python-ideas mailing list