[Python-Dev] subclassing builtin data structures

Guido van Rossum guido at python.org
Fri Feb 13 19:11:56 CET 2015


On Fri, Feb 13, 2015 at 10:02 AM, Alexander Belopolsky <
alexander.belopolsky at gmail.com> wrote:

>
> On Fri, Feb 13, 2015 at 12:35 PM, Guido van Rossum <guido at python.org>
> wrote:
>
>> IIUC you're proposing that the base class should *try* to construct an
>> instance of the subclass by calling the type with an argument, and fail if
>> it doesn't work. But that makes the whole thing brittle in the light of
>> changes to the subclass constructor. Also, what should the argument be? The
>> only answer I can think of is an instance of the base class.
>
>
> No.  The arguments should be whatever arguments are appropriate for the
> baseclass's __init__ or __new__.  In the case of datetime.date that would
> be year, month, day.
>

Agreed. (I was thinking of the case that Ethan brought up, which used int
as an example.)


> Note that the original pure python prototype of the datetime module had
> date.__add__ and friends call self.__class__(year, month, day).
> Unfortunately, it looks like the original sandbox did not survive the the
> hg conversion, so I cannot provide a link to the relevant history.
>

FWIW you're wrong when you claim that "a constructor is no different from
any other method". Someone else should probably explain this (it's an old
argument that's been thoroughly settled).

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


More information about the Python-Dev mailing list