[Python-Dev] PEP 557: Data Classes

Guido van Rossum guido at python.org
Tue Sep 12 00:47:21 EDT 2017


On Mon, Sep 11, 2017 at 8:21 PM, Barry Warsaw <barry at python.org> wrote:

> On Sep 11, 2017, at 19:16, Guido van Rossum <guido at python.org> wrote:
> >
> > Or we could just have two arguments, eq=<bool> and order=<bool>, and
> some rule so that you only need to specify one or the other but not both.
> (E.g. order=True implies eq=True.) That seems better than needing new
> constants just for this flag.
>
> You’d have to disallow the combination `order=True, eq=False` then,
> right?  Or would you ignore eq for any value of order=True?  Seems like a
> clumsier API than a single tri-value parameter.  Do the module constants
> bother you that much?


Yes they do. You may have to import them, or you have to prefix them with
the module name -- whereas keyword args and True/False require neither.

We could disallow order=True, eq=True. Or we could have the default being
to generate __eq__, __ne__ and __hash__, and a flag to prevent these (since
equality by object identity is probably less popular than equality by
elementwise comparison).

Perhaps:

order: bool = False
eq: bool = True

and disallowing order=True, eq=False.

-- 
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20170911/9dd50559/attachment.html>


More information about the Python-Dev mailing list