On 2/12/07, Guido van Rossum <[EMAIL PROTECTED]> wrote:
> FWIW, I'm strongly -1 on the "->" notation. As a C programmer it's got
> too many neurons committed to it.
>
> I recommend that you do some experiments with the readability of the
> .[...] notation, e.g. write a program that randomly generates x.[foo]
> and x[foo], and see how fast you can spot the difference. I bet that
> you won't have any trouble.
>

OK, so real-world examples.  First, ``foo.(name)``, from urllib.py::

        name = 'open_' + urltype
        self.type = urltype
        name = name.replace('-', '_')
        if not hasattr(self, name):
            if proxy:
                return self.open_unknown_proxy(proxy, fullurl, data)
            else:
                return self.open_unknown(fullurl, data)
        try:
            if data is None:
                return self.(name)(url)
            else:
                return self.(name)(url, data)
        except socket.error, msg:
            raise IOError, ('socket error', msg), sys.exc_info()[2]

and also::

        name = 'http_error_%d' % errcode
        if hasattr(self, name):
            method = self.(name)
            if data is None:
                result = method(url, fp, errcode, errmsg, headers)
            else:
                result = method(url, fp, errcode, errmsg, headers, data)
            if result: return result
        return self.http_error_default(url, fp, errcode, errmsg, headers)


And here is urllib2.py for ``.[]`` (used different files so you
wouldn't just remember where the change was)::

        if attr[:12] == '_Request__r_':
            name = attr[12:]
            if hasattr(Request, 'get_' + name):
                self.['get_' + name]()
                return self.[attr]
        raise AttributeError, attr

and::

        handlers = chain.get(kind, ())
        for handler in handlers:
            func = handler.[meth_name]
            result = func(*args)
            if result is not None:
                return result



Neither version jumps out at me strongly, although between the two the
``.[]`` version shows up the best.  But that might also be because of
the lower noise when used in a call.

-Brett
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to