On 26/04/2013 00:09, Ethan Furman wrote:
> We just fixed NoneType() to return None instead of raising an exception.
>> Another use-case for calling NoneType is working with ORMs:
>> result = []
> for field in row:
> type = get_type(field) # returns int, bool, str, NoneType, ...
> result.append(type(field))
>>> if field is None, the resulting call is NoneType(None), and since NoneType doesn't take any parameters we get an exception.
>> Is it worth filing a bug to have NoneType accept one optional argument, which defaults to None, and must be None, else
> raise an exception?
>> Or should it be:
>> class NoneType:
> def __new__(cls, *args, **kws):
> return None
>> Which is basically what my 2.x none() helper function does...
>On the one hand, NoneType(None) seems a strange thing to do.
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")).
Let's ask the Zen:
Special cases aren't special enough to break the rules.
Although practicality beats purity.