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