"my brain hurts" or is isinstance broken?

Delaney, Timothy tdelaney at avaya.com
Wed Jul 3 19:50:25 EDT 2002


> From: robert_kuzelj at yahoo.com [mailto:robert_kuzelj at yahoo.com]
> > 
> > if isinstance(source, type) or
> >    isinstance(source, types.ClassType):
> >        return source()
> >    else:
> >        return copy.copy( source )
>
> that is exactly what i did. but i dont like this solution cause
> as i told before it is rather implicit than explicit.

What is implicit about it? It is explicitly saying "if it's a new-style
class or an old-style class".

Perhaps the following would suit you better ...

def isoldstyleclass (obj):
    import types
    return isinstance(obj, types.ClassType)

def isnewstyleclass (obj):
    return isinstance(obj, type)

def isclass (obj):
    return isnewstyleclass(obj) or isoldstyleclass(obj)

if isclass(source):
    return source()
else:
    return copy.copy(source)

Tim Delaney





More information about the Python-list mailing list