Bummer! You have been redirected as the page you requested could not be found.
Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Well done!
You have completed Object-Oriented Python!
You have completed Object-Oriented Python!
Preview
Being able to identify object classes and types is a really useful ability.
-
isinstance(<object>, <class>)- This function will tell you whether or not<object>is an instance of<class>. If it could be an instance of several classes, you can use a tuple of classes like so:isinstance(<object>, (<class1>, <class2>, <class3>)). -
issubclass(<class>, <class>)- This function will tell you whether or not one class is a descendent of another class. Just likeisinstance(), you can use a tuple of classes to compare against. -
type(<instance>)will give you the class for an instance, as willinstance.__class__. Neither of these is particularly useful.
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
So far we've been building new classes and
using classes to add attributes and
0:00
methods to our custom classes.
0:04
Let's take a break from creating
classes though and look at a couple of
0:05
useful functions for identifying what
kind of objects we're working with.
0:08
So, these functions aren't necessarily
something you're going to use every day or
0:12
even something you're gonna
wanna use all the time.
0:16
They are, however, really handy when
you need to act a certain way or
0:19
an object,
depending on what kind of object it is.
0:22
If Python is duck typed,
0:25
consider this to be how you separate
the mallards from the mandarins.
0:27
So I'm gonna hop into Python, and
0:30
I'm just gonna show what these do because
they're really fun and interactive.
0:32
The first is probably the one that
you're going to use the most often.
0:37
This function isinstance
0:39
tells you whether or not something is
an instance of a particular class.
0:42
And the string 'a' does
happen to be a string.
0:47
You can use it with multiple types, too.
0:51
So we can say, isinstance,
and let's get the float 5.2,
0:53
and then inside of a new tuple
we can say int or float, and
0:58
we get back True because it
is either an int or float.
1:03
It's a float.
1:05
We can also do isinstance 5.2,
is that a string, a boolean, or a dict?
1:07
No, it's not.
1:16
This also does expose a pretty fun
little fact from Python's past.
1:18
Cuz you can do isinstance True,
and int, and it is.
1:22
I'll leave it up to you to figure
out why or how that came about.
1:28
The second function is issubclass,
issubclass.
1:32
And this one tells you whether or
1:38
not a particular class is
a subclass of another class.
1:39
Like, isinstance,
this can also take a list of classes, or
1:43
rather a couple of classes
to compare against.
1:46
So, (bool, int) True issubclass(str,
1:48
int) False, okay?
1:55
And we can use that to check
the tree of our own classes, too.
1:58
I'm gonna use Ctrl l here,
to clear the screen.
2:02
And I'm gonna say from
thieves import Thief.
2:04
And then I'm gonna say from
characters import Character.
2:11
And then, I'm gonna say issubclass
is Thief is subclass of Character.
2:16
True, since our Thief class
inherits from the Character class,
2:23
our Thief is a subclass of Character,
of course you already knew that.
2:26
The last two items are a bit less useful
but they're still good to know about.
2:31
Firstly, we have the type function.
2:35
Now, type can be used for
some trickier behavior, but
2:37
let's just focus on using it to
get information about an instance.
2:40
So I'm gonna make a new Thief, and
2:43
remember I have to put in
the name argument now.
2:47
And I'm going to say type for kenneth.
2:51
And I get that kenneth is a Thief.
2:54
Now, we already knew that, right?
2:56
But, it's great that Python can tell us.
2:59
The type function tells you the type
of object that an instance is.
3:01
Generally, you'll want to use isinstance,
if you're wanting to know if I whether or
3:05
not to work with an instance though, since
it will check the full inheritance tree.
3:08
If I was to use this,
to find out whether or
3:12
not kenneth was a Character,
I wouldn't know.
3:14
I only know that kenneth is a Thief.
3:17
Now, we've used the __init__
to control how it was created.
3:19
Python's classes have tons
of these magic methods and
3:25
we're gonna talk about several
of them in the next stage.
3:27
Python classes also have a lot
of magic attributes too, and
3:30
one of those is the class attribute.
3:34
It'll tell you what class an instance is.
3:36
So we can say kenneth.__class__ and
get back our thieves.Thief.
3:40
And we can even go a step further and get
the magic name attribute off of the class.
3:47
Kenneth.__class__.__name__, and
that tells us Thief.
3:53
So if you wanted to write some code,
then inspect at an instance's class name,
3:59
you could do it.
4:03
While Python is heavily slanted toward
duck typing, where if an object quacks
4:06
like a duck and waddles like a duck
should be considered a duck.
4:09
I mean, if you can use a method on
an object and not get an exception,
4:12
you should use it that way.
4:15
It's still really handy to be able to
tell if something is an instance of
4:17
a particular class or not.
4:20
You'll find yourself using these functions
and attributes when you get into code
4:21
that operates based on the type
of arguments it's working with.
4:24
Often referred to metaprograming or
introspective programming.
4:27
Both of those are beyond the scope of
this course, but feel free to look
4:31
into them yourself, they're very
interesting ways of programming.
4:34
All right, take a break if you need it,
get a snack if you're hungry,
4:37
do code challenges and
4:40
quizzes to cement all of this knowledge
in your head, then come back for
4:41
the next stage where we'll get our hands
dirty with Python's built in classes.
4:44
Ever wanted dot notation on a dictionary?
4:48
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up