Why are so many built-in types inheritable?

Georg Brandl g.brandl-nospam at gmx.net
Fri Mar 31 12:23:19 CEST 2006


Antoon Pardon wrote:
> Op 2006-03-31, Georg Brandl schreef <g.brandl-nospam at gmx.net>:
>> Antoon Pardon wrote:
>>
>>> Well that looks somewhat short sighted to me. It is also why python
>>> seems to throws so many surprises at people.
>>> 
>>> My impression is that quite frequently people come here with a question
>>> about why something doesn't work, that normally could be expected to
>>> work.
>>
>>> The reason why it doesn't work then seems to boil down to the
>>> developpers not taking the trouble of implementing something
>>> in general but only for the cases for which they could imagine
>>> a use case. Which means that when someone comes up with a use
>>> case later he is stuck.
>>
>> I think you're overgeneralizing here. Do you have other examples of
>> such a strategy resulting in something that doesn't work although
>> it should?
> 
> That is a very subjective question. I'm sure some will think
> there is no reason why subclassing slices or functions should
> work and so will not even consider this as something that
> doesn't work but should.
> 
> But I will give you one example.
> 
> Consider the following:
> 
>   lst[3:7:2]
> 
> What does it do? It constructs a slice object which is then used
> as an index in lst.

Which wasn't true in older versions of Python. lst[x:y] was a special
syntax construct calling a special method __getslice__. Slice objects
were merely introduced to simplify index handling.

> So why doesn't this work:
> 
>   fun(3:7:2)
> 
> What is wrong with expecting that a slice object would be constructed
> here which would then be used as an argument for the function call?

Point taken, now that slicing creates slice objects this would be
consistent. IIRC, there was indeed a PEP suggesting to introduce a range
literal which would have made this possible.

>> Nota bene: Often developers run into a limitation that is the result
>> of a deliberate design choice, such as "why aren't strings mutable?"
> 
> Well that is fine, but in this case I haven't seen such a design
> choice explained. On the contrary the only thing that I have
> heard in this case is that is wasn't implemeted because noone
> submitted a patch. So it seems hardly the result of a deliberate
> design choice in this case.
> 
>>> I know about practicality beating purity, but purity has it
>>> practical aspects too. If the python people had been willing
>>> to work a bit more at purity, that would have been a lot
>>> of more practical for those who found something not working
>>> as expected, although they had no reason to suspect so.
>>
>> I've told you already: if a developer wants a feature not currently
>> implemented, he/she can
>>  - ask on python-dev why
>>  - submit a feature request
>>  - submit a patch
>>
>> If he/she's not able to do one of these, he/she can at least convince some
>> other Python developer if the use case is strong enough.
> 
> Yes you told this already, and it ignores completely the point
> I am trying to make. There is a point here beside convincing
> the devolopers to implement this.

Being? I mean, developer time isn't available en masse, and an overly
strict view on purity might sometimes actually prevent a feature being
implemented.

Georg



More information about the Python-list mailing list