On Thu, Feb 12, 2015 at 7:41 PM, Ethan Furman <ethan at stoneleaf.us> wrote: > On 02/12/2015 06:39 PM, Alexander Belopolsky wrote: > > > In my view, a constructor is no different from any other method. If the > designers of the subclass decided to change the > > signature in an incompatible way, they should either override all > methods that create new objects or live with tracebacks. > > > On the other hand, if all I want in my Date class is a better __format__ > method, I am forced to override all operators > > or have my objects silently degrade [...] > > So there are basically two choices: > > 1) always use the type of the most-base class when creating new instances > > pros: > - easy > - speedy code > - no possible tracebacks on new object instantiation > > cons: > - a subclass that needs/wants to maintain itself must override all > methods that create new instances, even if the only change is to > the type of object returned > > 2) always use the type of self when creating new instances > > pros: > - subclasses automatically maintain type > - much less code in the simple cases [1] > > cons: > - if constructor signatures change, must override all methods which > create new objects > > Unless there are powerful reasons against number 2 (such as performance, > or the effort to affect the change), it sure > seems like the nicer way to go. > > So back to my original question: what other concerns are there, and has > anybody done any benchmarks? > Con for #2 is a showstopper. Forget about it. -- --Guido van Rossum (python.org/~guido) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20150212/0a368e51/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