annotate ___instancecheck__ @ 129:871ed91e9ece

created
author 127.0.0.1
date Sat, 29 Jun 2013 15:28:52 +0200
parents d6c87ec934b6
children 7249221d294b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
93
d6c87ec934b6 created
127.0.0.1
parents:
diff changeset
1 {{{#!python
d6c87ec934b6 created
127.0.0.1
parents:
diff changeset
2 def isinstance(thing, classinfo):
129
871ed91e9ece created
127.0.0.1
parents: 93
diff changeset
3 if hasattr(thing, '__instancecheck__'):
871ed91e9ece created
127.0.0.1
parents: 93
diff changeset
4 return thing.__instancecheck__(thing, classinfo)
871ed91e9ece created
127.0.0.1
parents: 93
diff changeset
5 return issubclass(thing.__class__, classinfo)
871ed91e9ece created
127.0.0.1
parents: 93
diff changeset
6
871ed91e9ece created
127.0.0.1
parents: 93
diff changeset
7 def issubclass(cls, classinfo):
871ed91e9ece created
127.0.0.1
parents: 93
diff changeset
8 if hasattr(cls, '__subclasscheck__'):
871ed91e9ece created
127.0.0.1
parents: 93
diff changeset
9 return cls.__subclasscheck__(cls, classinfo)
871ed91e9ece created
127.0.0.1
parents: 93
diff changeset
10 if classinfo.__class__ != tuple:
871ed91e9ece created
127.0.0.1
parents: 93
diff changeset
11 classinfo = (classinfo,)
871ed91e9ece created
127.0.0.1
parents: 93
diff changeset
12 for supeclass in search_classes(cls):
871ed91e9ece created
127.0.0.1
parents: 93
diff changeset
13 if superclass in classinfo:
871ed91e9ece created
127.0.0.1
parents: 93
diff changeset
14 return True
871ed91e9ece created
127.0.0.1
parents: 93
diff changeset
15 return False
93
d6c87ec934b6 created
127.0.0.1
parents:
diff changeset
16 }}}