On 2006-08-29, Jonathan Gardner <[EMAIL PROTECTED]> wrote:
>
> Simon Forman wrote:
>>
>> If you have a reason to restrict your code to using only ints (perhaps
>> you're packing them into an array of some sort, or passing them to a C
>> extension module) then yes, of course it's appropriate.
>
> I politely disagree. Rather than an interface that demands an actual
> int, demand something that can be typecast as an int.
>
> For instance:
>
>   def needsInt(i):
>     i = int(i)
>     ... pass i to an internal c function that requires an int ...
>     # Or better yet, write your internal c function to take any Python
> object and cast it into an int.
>
> If you absolutely need a particular type of thing, then cast it into
> that thing.

The logical conclusion of this decision would be that one should write
sequence classes as follows:

  class Seq(object):

    ...

    def __getitem__(self, index):
      index = int(index)
      ...

    def __setitem__(self, index, value):
      index = int(index)
      ...

I don't know about you but I personally think this is overkill.
I would also prefer seq[2.5] to raise an exception instead
of returning seq[2]

-- 
Antoon Pardon
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to