<div dir="ltr">On Fri, Feb 1, 2013 at 3:58 AM, Guido van Rossum <span dir="ltr"><<a href="mailto:guido@python.org" target="_blank">guido@python.org</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=""><div class="h5"><span style="color:rgb(34,34,34)">hasattr() smells bad. It also has namespace issues (hasattr(transport,</span><br>

</div></div>
"write") returns true) and if people forget to use it (perhaps because<br>
the transport they normally use always has a certain attribute) their<br>
code is brittle. Defining a new API with a string key signals clearly<br>
that the value may or may not exist, and reminds people to test the<br>
result for None. (Of course they can forget that too. But it still<br>
feels different to me.)</blockquote><div><br></div><div style>I understand. It's a good solution for clearly separating the standard transport api from the extra-and-specific api. We want to make it obvious when a protocol is breaking the transport abstraction - to promote playing nicely with different transports.</div>

<div style><br></div></div></div></div>