[Python-Dev] Documenting sorted/min/max prerequisites
The list.sort method is documented to only use less than: https://docs.python.org/3/library/stdtypes.html#list.sort but I don't think that is correct, it seems to use greater than if it exists and less than doesn't. My understanding is that items need to define one of l.t. or g.t. to make it sortable, not the full complement of six rich comparison methods. The same seems to be the case for sorted, min and max, but none of them have documented that fact: https://docs.python.org/3/library/functions.html#max https://docs.python.org/3/library/functions.html#min https://docs.python.org/3/library/functions.html#sorted Should we document that all four functions will use l.t. if it exists, otherwise g.t. if it exists, but don't need both? -- Steven ___ Python-Dev mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/[email protected]/message/5AQMG6ADD6RGPLI3VTILB2MKXMBFTIGU/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: Documenting sorted/min/max prerequisites
14.12.19 12:45, Steven D'Aprano пише: The list.sort method is documented to only use less than: https://docs.python.org/3/library/stdtypes.html#list.sort but I don't think that is correct, it seems to use greater than if it exists and less than doesn't. My understanding is that items need to define one of l.t. or g.t. to make it sortable, not the full complement of six rich comparison methods. What evidence do you have that it is not correct? ___ Python-Dev mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/[email protected]/message/ZRWAQLPB4SIT7BWLOOKK2DGEK7KJZ635/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: Documenting sorted/min/max prerequisites
On Sat, Dec 14, 2019 at 02:40:04PM +0200, Serhiy Storchaka wrote: > 14.12.19 12:45, Steven D'Aprano пише: > >The list.sort method is documented to only use less than: > > > >https://docs.python.org/3/library/stdtypes.html#list.sort > > > >but I don't think that is correct, it seems to use greater than if it > >exists and less than doesn't. My understanding is that items need to > >define one of l.t. or g.t. to make it sortable, not the full complement > >of six rich comparison methods. > > What evidence do you have that it is not correct? I might be misinterpreting the evidence, but sorting works on objects that define `__gt__` without `__lt__`. py> class A: ... def __init__(self, x): self.x = x ... def __gt__(self, other): return self.x > other.x ... py> L = [A(9), A(1), A(8)] py> L.sort() py> [obj.x for obj in L] [1, 8, 9] But the main part of my question is whether we should make the same guarantee for sorted, min and max as we already make for list.sort. -- Steven ___ Python-Dev mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/[email protected]/message/K7BSMHSC5SWDS3222SI3M4UJ4FHCQRFX/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: Documenting sorted/min/max prerequisites
14.12.19 15:29, Steven D'Aprano пише: I might be misinterpreting the evidence, but sorting works on objects that define `__gt__` without `__lt__`. py> class A: ... def __init__(self, x): self.x = x ... def __gt__(self, other): return self.x > other.x ... py> L = [A(9), A(1), A(8)] py> L.sort() py> [obj.x for obj in L] [1, 8, 9] This class supports '<': >>> A(1) < A(2) True The `<` operator try to use `__lt__`, but if it is not defined falls back to `__gt__`. ___ Python-Dev mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/[email protected]/message/DJ7L3REYQ23HLXRY425Y4J725WJSTHON/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: Documenting sorted/min/max prerequisites
On 14/12/2019 15.20, Serhiy Storchaka wrote: > 14.12.19 15:29, Steven D'Aprano пише: >> I might be misinterpreting the evidence, but sorting works on objects >> that define `__gt__` without `__lt__`. >> >> py> class A: >> ... def __init__(self, x): self.x = x >> ... def __gt__(self, other): return self.x > other.x >> ... >> py> L = [A(9), A(1), A(8)] >> py> L.sort() >> py> [obj.x for obj in L] >> [1, 8, 9] > > This class supports '<': > A(1) < A(2) > True > > The `<` operator try to use `__lt__`, but if it is not defined falls > back to `__gt__`. The operation "a < b" also fallback back to B.__gt__, when A.__lt__ returns NotImplemented for instances of B. Christian ___ Python-Dev mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/[email protected]/message/PAMPK6TS7TVBDAB54OEJEBJCNT75VW3X/ Code of Conduct: http://python.org/psf/codeofconduct/
