classIntermediate Examples

Defines a new class (blueprint for creating objects)

Inheritance

Creating a subclass that extends a parent class.

python
class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        return f"{self.name} makes a sound"

class Cat(Animal):
    def speak(self):
        return f"{self.name} says Meow!"

class Dog(Animal):
    def speak(self):
        return f"{self.name} says Woof!"

animals = [Cat("Whiskers"), Dog("Rex"), Animal("???")]
for a in animals:
    print(speak())
    print(f"  Is Animal? {isinstance(a, Animal)}")

Subclasses inherit from a parent and can override methods. isinstance() checks the full hierarchy.

Class and instance variables

Understanding shared vs per-instance state.

python
class Student:
    school = "Python Academy"  # class variable (shared)

    def __init__(self, name):
        self.name = name  # instance variable (per-object)

s1 = Student("Alice")
s2 = Student("Bob")

print(f"{s1.name} at {s1.school}")
print(f"{s2.name} at {s2.school}")

Student.school = "Code School"
print(f"{s1.school}")
print(f"{s2.school}")

s1.school = "My School"  # creates instance variable, shadows class var
print(f"{s1.school}")
print(f"{s2.school}")

Class variables are shared across all instances. Assigning to self.x creates an instance variable that shadows the class variable.

Want to try these examples interactively?

Open Intermediate Playground