eryksun wrote:
> On Tue, Aug 28, 2012 at 6:00 AM, Peter Otten <[email protected]> wrote:
>>
>> Anyway here's an alternative implementation:
>>
>>>>> def vi(x):
>> ... if not isinstance(x, numbers.Number):
>> ... raise TypeError
>> ... if not int(x) == x:
>> ... raise ValueError
>
> You could test against numbers.Integral.
That would reject "floats with an integral value" and therefore doesn't
comply with the -- non-existing -- spec.
> But it's not fool-proof.
Nothing is. The code attempts to make expectations more explicit than Steven
did in his original implementation.
> Someone can register an incompatible class with the abstract base
> class (ABC).
>
> >>> import numbers
> >>> isinstance("42", numbers.Integral)
> False
> >>> numbers.Integral.register(str)
> >>> isinstance("42", numbers.Integral)
> True
That's quite an elaborate scheme to shoot yourself in the foot ;)
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor