By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,907 Members | 1,963 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,907 IT Pros & Developers. It's quick & easy.

Determine an object is a subclass of another

P: n/a
How can tell if an object is a subclass of something else?

Imagine...

class Thing:
pass

class Animal:
pass

class Dog:
pass

d = Dog()

I want to find out that 'd' is a Dog, Animal and Thing. Such as...

d is a Dog
d is a Animal
d is a Thing

Thanks

Jan 9 '07 #1
Share this Question
Share on Google+
5 Replies


P: n/a
On 2007-01-09, abcd <co*******@gmail.comwrote:
How can tell if an object is a subclass of something else?

Imagine...

class Thing:
pass

class Animal:
pass

class Dog:
pass

d = Dog()

I want to find out that 'd' is a Dog, Animal and Thing. Such
as...

d is a Dog
d is a Animal
d is a Thing
isinstance(d, Dog)
isinstance(d, Animal)
isinstance(d, Thing)

Note that in your example d is not an instance of anything but
Dog. If you want a hierarchy, you must say so. Python doesn't
even try to make educated guesses.

class Thing:
pass

class Animal(Thing):
pass

class Dog(Animal):
pass

--
Neil Cerutti
Jan 9 '07 #2

P: n/a
First you need to subclass the classes so that Dog actually is a
subclass of Animal which is a subclass of thing...

class Thing:
pass

class Animal(Thing):
pass

class Dog(Animal):
pass

class Weapon(Thing):
pass

class Gun(Weapon):
pass

Then you can use 'isinstance'
>>>d = Dog()
isinstance(d,Thing)
True
>>>isinstance(d,Animal)
True
>>>isinstance(d,Weapon)
False
>>>isinstance(d,Gun)
False

Jan 9 '07 #3

P: n/a
yea i meant to have animal extend thing and dog extend animal....my
mistake.

anyways, is there a way to check without having an instance of the
class?

such as,

isinstance(Dog, (Animal, Thing)) ??

thanks

Jan 9 '07 #4

P: n/a
abcd a écrit :
yea i meant to have animal extend thing and dog extend animal....my
mistake.

anyways, is there a way to check without having an instance of the
class?

such as,

isinstance(Dog, (Animal, Thing)) ??

issubclass(Dog, Animal)

Note that such tests should only be used in a very few specific cases -
certainly not to try&implement some kind of static typing... In Python,
inheritance is mostly about implementation.

Jan 9 '07 #5

P: n/a
On 9 Jan 2007 07:01:31 -0800, abcd <co*******@gmail.comwrote:
anyways, is there a way to check without having an instance of the
class?
In [1]: class A:
...: pass
...:

In [2]: class B(A):
...: pass
...:

In [3]: issubclass(B, A)
Out[3]: True

In [4]: isinstance(B(), B)
Out[4]: True

In [5]: isinstance(B(), A)
Out[5]: True

--
Felipe.
Jan 9 '07 #6

This discussion thread is closed

Replies have been disabled for this discussion.