New submission from Eric V. Smith <e...@trueblade.com>:

Modify dataclasses to make it easier to specify special methods.

For example: currently, if you want to override __repr__, you need to specify 
@dataclass(repr=False), and also provide your own __repr__. Also, it's current 
an error to not specify repr=False and to also provide your own __repr__.  
@dataclass should be able to determine that if you provide __repr__, you don't 
want it to provide it's own __repr__.

The methods that @dataclass will provide for you are:
__init__
__repr__
__eq__
__ne__
__lt__
__le__
__gt__
__ge__
_hash__
and if using frozen=True, also:
__setattr__
__delattr__

Per the discussion that started at 
https://mail.python.org/pipermail/python-dev/2017-December/151487.html, the 
change will be to override these methods only if:
1. the method would have been generated based on @dataclass params, and
2. the method is not present in the class's __dict__.

The first item is to allow the user to continue to suppress method generation, 
and the second item is so that base-class methods are not considered in the 
decision.

I'm still thinking through how __eq__ and __ne__ should be handled (as well as 
the ordering comparisons, too). I'll raise an issue on python-dev and point it 
here.

----------
assignee: eric.smith
messages: 309628
nosy: eric.smith
priority: normal
severity: normal
status: open
title: dataclasses: make it easier to use user-supplied special methods
type: behavior
versions: Python 3.7

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue32513>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to