On 26/04/13 09:56, MRAB wrote:

On the one hand, NoneType(None) seems a strange thing to do.


Only when you write it out like that as constants. It's no more,
or less, strange than str('spam') or int(1) or list([]). Why
would you do that?

But as soon as you think of it in general terms:

some_type(some_instance)

that's a pretty normal thing to do. And if it just so happened
that some_instance were an instance of some_type, it would be
surprising if the call failed.

(I initially wrote "astonishing", but then I realised that some
types take more than one argument, e.g. FunctionType. So it's
merely surprising.)


On the other hand:

     type(value)(value) == value

would return True for the built-in types (will certain exceptions, such
as when value is float("NaN")).

Not an exception, that works fine in 3.3:

value = float('nan')
type(value)(value)
nan


Let's ask the Zen:

Special cases aren't special enough to break the rules.

Although practicality beats purity.


I cannot think of any use-case where I would actively want
NoneType(None) to fail. That would be like having bool(True)
raise an exception.

On the other hand, NoneType(x) for any other x ought to fail.




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

Reply via email to