On 12/29/2017 02:23 AM, Ethan Smith wrote:

The first is that needing both a keyword and method is duplicative and 
unnecessary. Eric agreed it was a hassle, but
felt it was justified considering someone may accidentally override a dataclass 
method. I disagree with this point of
view as dataclasses are billed as providing automatic methods. Overriding via 
method definition is very natural and
idiomatic. I don't really see how someone could accidentally override a 
dataclass method if methods were not generated
by the dataclass decorator that are already defined in the class at definition 
time.

Accidental or not, the decorator should not be replacing methods defined by the 
class.

The second concern, which I came across more recently, is if I have a base 
class, and dataclasses inherit from this base
class, inherited __repr__ & co are silently overridden by dataclass. This is 
both unexpected, and also means I need to
pass a repr=False to each subclass' decorator to get correct behavior, which 
somewhat defeats the utility of
subclassing. Im not as sure a whole lot can be done about this though.

It is possible to determine whether an existing __repr__ is from 'object' or not, and only provide one if that is the case. I think that should be the default, with 'repr = True' for those cases where a new, auto-generated, __repr__ is desired.

--
~Ethan~
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to