Altcademy - a Forbes magazine logo Best Coding Bootcamp 2023

How to create a class in Python

Introduction to Classes in Python

When learning programming, one of the most important concepts to grasp is the idea of organizing your code into reusable building blocks. In object-oriented programming, these building blocks are often called "classes." In this blog post, we will explore how to create and use classes in Python, a popular and beginner-friendly programming language. We'll also provide code examples and break down the concepts into simple terms to help you understand better.

What is a Class?

A class can be thought of as a blueprint or template for creating objects. An object is a collection of data (attributes) and methods (functions) that operate on that data. In Python, everything is an object, even basic data types like numbers, strings, and lists. By defining a class, we create a new type of object that can have its own unique properties and behaviors.

To understand the concept of classes better, let's use a real-world analogy. Imagine you work for a car manufacturer and are responsible for designing new car models. Each car model has specific attributes (such as color, engine size, and number of doors) and behaviors (like starting, stopping, and accelerating). In this scenario, a class would represent a car blueprint, and each car you produce from that blueprint would be an object.

Defining a Class in Python

To define a class in Python, use the class keyword followed by the class name and a colon. By convention, class names in Python are written in CamelCase, meaning the first letter of each word is capitalized, and there are no underscores between words. After the colon, you can define the attributes and methods of the class, indented by one level. Here's an example of a basic class definition:

class Car:
    pass

In this example, we've defined an empty class called Car. The pass statement is used as a placeholder and does nothing; it's there because Python requires at least one indented statement after the colon.

Adding Attributes and Methods to a Class

Now that we know how to define a basic class, let's add some attributes and methods to our Car class.

Attributes

Attributes are variables that belong to an object. In our car example, we might want our cars to have attributes like color, engine_size, and number_of_doors. To define attributes, you can use the special method called __init__. This method is called the constructor and is executed automatically when you create a new object from the class.

The __init__ method takes a special parameter called self, which is a reference to the object itself. You can use self to set the attributes of the object. Here's an example of how to define attributes for our Car class:

class Car:
    def __init__(self, color, engine_size, number_of_doors):
        self.color = color
        self.engine_size = engine_size
        self.number_of_doors = number_of_doors

In this example, we've defined an __init__ method that takes three parameters (in addition to self): color, engine_size, and number_of_doors. We then set the attributes of the object using the self keyword.

Methods

Methods are functions that belong to an object and can perform actions on that object's data. In our car example, we might want our cars to have methods like start, stop, and accelerate. To define a method, simply write a function inside the class definition, indented by one level. Like the __init__ method, other methods also need to have the self parameter as their first argument. Here's an example of how to define methods for our Car class:

class Car:
    def __init__(self, color, engine_size, number_of_doors):
        self.color = color
        self.engine_size = engine_size
        self.number_of_doors = number_of_doors

    def start(self):
        print("The car has started.")

    def stop(self):
        print("The car has stopped.")

    def accelerate(self, speed):
        print(f"The car is accelerating to {speed} km/h.")

In this example, we've added three methods to our Car class: start, stop, and accelerate. The start and stop methods simply print messages, while the accelerate method takes a speed parameter and prints a message with the specified speed.

Creating Objects from a Class

Now that we've defined a Car class with attributes and methods, let's see how to create objects from this class. To create a new object, you can call the class like a function, passing the required arguments for the __init__ method (excluding self). Here's an example:

my_car = Car("red", 2.0, 4)

In this example, we've created a new Car object with the color "red", an engine size of 2.0, and 4 doors. We assign this object to the variable my_car.

Accessing Attributes and Methods of an Object

Once you have an object, you can access its attributes and methods using the dot notation. Here's an example of how to access the attributes and methods of our my_car object:

print(my_car.color)  # Output: red
print(my_car.engine_size)  # Output: 2.0
print(my_car.number_of_doors)  # Output: 4

my_car.start()  # Output: The car has started.
my_car.accelerate(100)  # Output: The car is accelerating to 100 km/h.
my_car.stop()  # Output: The car has stopped.

In this example, we access the attributes of the my_car object by appending the attribute name after the object variable with a dot, like my_car.color. Similarly, we can call the methods of the object using the dot notation, like my_car.start().

Conclusion

In this blog post, we've learned how to create and use classes in Python. We've covered how to define a class, add attributes and methods, create objects from a class, and access the attributes and methods of an object. By understanding how to use classes in Python, you'll be better prepared to tackle more complex programming tasks and create reusable, modular code.