<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Mar 18, 2011, at 6:58 AM, Mike Graham wrote:</div><blockquote type="cite"><div><font class="Apple-style-span" color="#000000"><br></font>(a) is a misfeature. isinstance checks are bad: they make your code<br>less flexible  in Python the actual type of an object isn't something<br>we treat as semantic data. This is *especially* the case with mixins,<br>which are just a convenient thing for code reuse, not some meaningful<br>type.<br></div></blockquote></div><br><div>I believe that is outdated advice.  Since Guido introduced </div><div>abstract base classes, the trend (and grain) of Python is to</div><div>use isinstance() to check for a given interface (i.e. distinguishing</div><div>a Sequence from a Mapping) and to use ABCs as mixins</div><div>(i.e. MutableMapping has replaced UserDict.DictMixin).</div><div><br></div><div><br></div><div>Raymond</div></body></html>