<div dir="auto"><div><div class="gmail_quote"><div dir="ltr">On Thu, Jan 31, 2019, 05:26 Nick Coghlan <<a href="mailto:ncoghlan@gmail.com">ncoghlan@gmail.com</a> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Thu, 31 Jan 2019 at 16:40, Glenn Linderman <<a href="mailto:v%2Bpython@g.nevcal.com" target="_blank" rel="noreferrer">v+python@g.nevcal.com</a>> wrote:<br>
>> On 1/30/2019 8:45 PM, Raymond Hettinger wrote:<br>
>>> On Jan 30, 2019, at 3:41 PM, Glenn Linderman <<a href="mailto:v%2Bpython@g.nevcal.com" target="_blank" rel="noreferrer">v+python@g.nevcal.com</a>> wrote:<br>
>>> Would it be practical to add deprecated methods to regular dict for the OrderedDict reordering methods that raise with an error suggesting "To use this method, convert dict to OrderedDict." (or some better wording).<br>
>> That's an interesting idea.  Regular dicts aren't well suited to the reordering operations (like lists, repeated inserts at the front of the sequence wouldn't be performant relative to OrderedDict which uses double-linked lists internally).  My instinct is to leave regular dicts alone so that they can focus on their primary task (being good a fast lookups).<br>
> My goal was just to give a meaningful error message if someone misses the implications in What's New, and has code that actually does expect named_tuple.as_dict to have the ordering operations.<br>
<br>
The downside of doing that is that automated code introspection tools<br>
don't know that the methods don't really exist, they just see the<br>
method names in the type dictionary and offer them up for code<br>
completion.<br>
<br>
So in this case, the extra runtime check isn't worth the cost of<br>
breaking static code analysis and other forms of introspection.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">It's technically possible for attributes to do something custom when accessed, without appearing in __dir__. I don't know if that's a useful technique in this case, but sometimes it is.</div><div dir="auto"><br></div><div dir="auto">-n</div></div>