Class 24 - Objects and Classes


Project 5: Tic-Tac-Go! is now posted. To be well on track to complete the Red Belt (criterion for earning an A in the course), you should complete it by Monday, 11 April.



What is an object?

What is a class?

Defining a Class

class Dog:
    def __init__(self):
        self.hungry = True

    def eat(self):
        self.hungry = False

    def bark(self):
        if self.hungry:
            print("ham ham ham ham!")
            print("yap yap yap")

Exploring Objects

Python provides some useful built-in functions for exploring objects.

type(object) returns the type of object:

>>> type(3)

>>> type("hello")

>>> type([1, 2, 3])

>>> scooby = Dog()
>>> type(scooby)

isinstance(object, type) returns True if object is an instance of type type, False otherwise:

assert isinstance(scooby, object)
assert isinstance(3, int)
assert not isinstance(3, str)
assert isinstance(scooby, Dog)
assert isinstance(scooby, object)
assert isinstance(3, object)

dir(object) returns a list of all the valid attributes for object (i.e., object.attribute):

>>> dir(3)
['__abs__', '__add__', ..., '__xor__', 'bit_length', 'conjugate', 'denominator', 
 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
>>> dir(scooby)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', ..., 
 '__str__', '__subclasshook__', '__weakref__', 'bark', 'eat', 'hungry']

Note that we only defined the __init__, bark, eat, and hungry methods for Dog. All the other methods were inherited from its (default) superclass, object.