Skip to main content

Classes in Python

Python is an object-oriented programming language and classes are the fundamental building blocks for creating objects. This cheat sheet will walk you through all the basics of classes in Python.

Creating a Class

In Python, we create a class using the class keyword. The name of the class usually follows CamelCase convention.

class MyClass:
x = 5

In this example, we've created a class named MyClass with a single attribute x. You can create an object of this class and access its attribute using dot notation.


An instance is a specific object created from a particular class. You can create an instance of a class by calling the class name as if it were a function.

p1 = MyClass()

In this snippet, p1 is an instance of MyClass. We're printing the attribute x of this instance, which should output 5.

__init__() Function

The __init__() function in Python is a special method that's automatically called when an object of a class is instantiated. It's used to initialize the attributes of the class.

class MyClass:
def __init__(self, name): = name

p1 = MyClass("John")

In this example, __init__() is used to assign a name to the instance at the time of creation. We're passing "John" as a parameter while creating p1, which is then accessible as an attribute of the instance.


Methods are functions defined inside the body of a class. They are used to perform operations that sometimes utilize the attributes of the class.

class MyClass:
def __init__(self, name): = name

def greet(self):
print(f"Hello, {}!")

p1 = MyClass("John")

In this code, we've added a method greet to our class that prints a greeting message. We're calling this method on the p1 instance, which should print "Hello, John!".

self Parameter

The self parameter in Python is a reference to the current instance of the class. It is used to access variables and methods associated with the class.

class MyClass:
def __init__(self, name): = name

def change_name(self, new_name): = new_name

p1 = MyClass("John")

In this snippet, the change_name method uses the self parameter to modify the name attribute of the instance. After calling this method on p1, printing should output "Jane".

Modifying Objects

You can modify the attributes of an object directly, or by defining methods for the purpose. = "Alice"

In this example, we've directly changed the name attribute of p1 to "Alice". Printing should now output "Alice".


Inheritance allows us to define a class that inherits all the methods and properties from another class. The class from which we're inheriting is called the parent class, and the class that is inherited is called the child class.

class Person:
def __init__(self, name, age): = name
self.age = age

def greet(self):
print(f"Hello, my name is {}.")

class Student(Person):
def __init__(self, name, age, grade):
super().__init__(name, age)
self.grade = grade

def study(self):
print(f"I'm studying in grade {self.grade}.")

s1 = Student("Alice", 12, 6)

In this example, we have a parent class Person and a child class Student. The Student class inherits the attributes and methods of the Person class, demonstrated by the usage of the super() function. We also add a new attribute grade and a new method study to the Student class. When we create an instance of Student and call the greet and study methods, it should print "Hello, my name is Alice." and "I'm studying in grade 6.", respectively.