Classes & Objects

Simple Class

  1. # define class
  2. class Dog:
  3. pass
  4. #ans: create object
  5. my_dog = Dog()

Class with init

  1. # constructor
  2. class Dog:
  3. def __init__(self, name, age):
  4. self.name = name
  5. self.age = age
  6. dog = Dog("Rex", 3)
  7. #ans: dog.name is "Rex"

Instance Attributes

  1. # access attributes
  2. class Dog:
  3. def __init__(self, name):
  4. self.name = name
  5. dog = Dog("Rex")
  6. dog.name
  7. #ans: "Rex"
  8. dog.name = "Max"
  9. #ans: "Max"

Instance Methods

  1. # methods
  2. class Dog:
  3. def __init__(self, name):
  4. self.name = name
  5. def bark(self):
  6. return f"{self.name} says Woof!"
  7. dog = Dog("Rex")
  8. dog.bark()
  9. #ans: "Rex says Woof!"

Class Variables

  1. # class variable (shared)
  2. class Dog:
  3. species = "Canis familiaris"
  4. def __init__(self, name):
  5. self.name = name
  6. Dog.species
  7. #ans: "Canis familiaris"
  8. Dog("Rex").species
  9. #ans: "Canis familiaris"

Exercises - Part 1

  1. # what is type?
  2. class MyClass:
  3. pass
  4. obj = MyClass()
  5. type(obj)
  6. #ans: <class 'MyClass'>

Exercises - Part 2

  1. # __init__ return?
  2. class MyClass:
  3. def __init__(self):
  4. return 5
  5. #ans: TypeError (__init__ must return None)

Exercises - Part 3

  1. # self parameter?
  2. class MyClass:
  3. def method(self):
  4. return self
  5. obj = MyClass()
  6. obj.method() is obj
  7. #ans: True

Exercises - Part 4

  1. # class vs instance variable?
  2. class MyClass:
  3. x = 5
  4. obj = MyClass()
  5. obj.x
  6. #ans: 5 (from class)
  7. obj.x = 10
  8. obj.x
  9. #ans: 10 (instance variable)

Exercises - Part 5

  1. # forget self?
  2. class MyClass:
  3. def method():
  4. pass
  5. obj = MyClass()
  6. obj.method()
  7. #ans: TypeError (missing self)

Exercises - Part 6

  1. # multiple instances?
  2. class Counter:
  3. def __init__(self):
  4. self.count = 0
  5. c1 = Counter()
  6. c2 = Counter()
  7. c1.count = 5
  8. #ans: c2.count is still 0

Exercises - Part 7

  1. # class variable modification?
  2. class MyClass:
  3. x = []
  4. obj1 = MyClass()
  5. obj2 = MyClass()
  6. obj1.x.append(1)
  7. #ans: obj2.x is [1] (same list!)

Exercises - Part 8

  1. # attribute not found?
  2. class MyClass:
  3. pass
  4. obj = MyClass()
  5. obj.missing
  6. #ans: AttributeError

Exercises - Part 9

  1. # isinstance?
  2. class MyClass:
  3. pass
  4. obj = MyClass()
  5. isinstance(obj, MyClass)
  6. #ans: True

Exercises - Part 10

  1. # __dict__?
  2. class MyClass:
  3. def __init__(self):
  4. self.x = 5
  5. obj = MyClass()
  6. obj.__dict__
  7. #ans: {'x': 5}

Google tag (gtag.js)