It's somewhat problematic. If I subclass dict with a different constructor, but I don't overload copy(), how can the dict.copy() method construct a correct instance of the subclass? Even if the constructor signatures match, how can dict.copy() make sure it copies all attributes properly? Without an answer to these questions I think it's better to admit defeat and return a dict instance -- classes that want to do better should overload copy(). I notice that Counter.copy() has all the problems I indicate here -- it works as long as you don't add attributes or change the constructor signature. I bet this isn't documented anywhere. On Sun, Oct 29, 2017 at 9:40 AM, Brett Cannon <brett at python.org> wrote: > It probably should be more consistent and I have a vague recollection that > this has been brought up before. > > On Sun, Oct 29, 2017, 08:21 Serhiy Storchaka, <storchaka at gmail.com> wrote: > >> The copy() methods of list, dict, bytearray, set, frozenset, >> WeakValueDictionary, WeakKeyDictionary return an instance of the base >> type containing the content of the original collection. >> >> The copy() methods of deque, defaultdict, OrderedDict, Counter, >> ChainMap, UserDict, UserList, WeakSet, ElementTree.Element return an >> instance of the same type as the original collection. >> >> The copy() method of mappingproxy returns a copy of the underlying >> mapping (using its copy() method). >> >> os.environ.copy() returns a dict. >> >> Shouldn't it be more consistent? >> >> _______________________________________________ >> Python-Dev mailing list >> Python-Dev at python.org >> https://mail.python.org/mailman/listinfo/python-dev >> Unsubscribe: https://mail.python.org/mailman/options/python-dev/ >> brett%40python.org >> > > _______________________________________________ > Python-Dev mailing list > Python-Dev at python.org > https://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: https://mail.python.org/mailman/options/python-dev/ > guido%40python.org > > -- --Guido van Rossum (python.org/~guido) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20171029/ee9fe2e8/attachment.html>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4