Still the __new__ hell ...

Jean-Paul Calderone exarkun at divmod.com
Mon Mar 19 11:59:39 EDT 2007


On Mon, 19 Mar 2007 15:39:49 +0100, Bruno Desthuilliers <bruno.42.desthuilliers at wtf.websiteburo.oops.com> wrote:
>Jean-Paul Calderone a écrit :
>> On Mon, 19 Mar 2007 13:17:11 +0100, Bruno Desthuilliers
>>>
>>> [snip]
>>>
>>> And what if it's a unicode string ?
>>> The correct idiom here is:
>>>                  if isinstance(year, basestring):
>>>
>>>>             year,month,day=map(int,string.split(year,'-'))
>>>                         year, month, day = map(int, year.split('-'))
>>
>> And what if it's another kind of string?
>
>One that doesn't inherit from basestring ?
>
>>  The correct idiom is:
>>
>>   try:
>>       parts = year.split('-')
>>   except AttributeError:
>>       # Handle int case
>>   else:
>>       year, month, day = map(int, parts)
>>
>>>
>>>>         if year < 100:
>>>>             year += 2000
>>>>         return date.__new__(cls,year,month,day)
>>>>
>
>And what if it's an object that has nothing to do with a string but
>happens to have a split() method ?-)
>
>>> (snip)
>
>Jean-Paul, you're of course right from a theoretical POV. Practically
>speaking, chances that such a method will ever be fed with a string-like
>object not deriving from basestring are IMVHO *very* low. While I
>usually raise a big warning flag when I spot a test against
>isinstance(), I'd say this is an example of the few cases where it's ok.
>  YMMV of course...

http://mail.python.org/pipermail/python-dev/2005-February/051717.html

Jean-Paul



More information about the Python-list mailing list