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