Mercurial > magic
diff ___instancecheck__ @ 129:871ed91e9ece
created
| author | 127.0.0.1 |
|---|---|
| date | Sat, 29 Jun 2013 15:28:52 +0200 |
| parents | d6c87ec934b6 |
| children | 7249221d294b |
line wrap: on
line diff
--- a/___instancecheck__ Sat Jun 29 15:21:50 2013 +0200 +++ b/___instancecheck__ Sat Jun 29 15:28:52 2013 +0200 @@ -1,9 +1,16 @@ {{{#!python def isinstance(thing, classinfo): - try: - __instancecheck__ = thing.__instancecheck__ - except AttributeError: - return issubclass(thing.__class__, classinfo) - else: - return __instancecheck__(thing, classinfo) + if hasattr(thing, '__instancecheck__'): + return thing.__instancecheck__(thing, classinfo) + return issubclass(thing.__class__, classinfo) + +def issubclass(cls, classinfo): + if hasattr(cls, '__subclasscheck__'): + return cls.__subclasscheck__(cls, classinfo) + if classinfo.__class__ != tuple: + classinfo = (classinfo,) + for supeclass in search_classes(cls): + if superclass in classinfo: + return True + return False }}} \ No newline at end of file
