Python Classes: A Beginner's Guide
Learn the basics of Python classes, including how to create, define, and use them.
Website Visitors:Classes are an integral part of object-oriented programming (OOP) in Python. They provide a blueprint or template for creating objects, which are instances of a class. Understanding classes and their associated concepts, such as __init__, self, and more, is crucial for building modular and reusable code. In this article, we’ll delve into the details of classes in Python, explaining each concept along with examples.
Before we learn what is a class, lets look at what is an Object in Python.
Object
In Python, an object is an instance of a class. It is a fundamental concept in object-oriented programming (OOP). Objects are created from classes and can have their own unique states (attributes) and behaviors (methods).
When an object is created, it inherits the attributes and methods defined in its class. These attributes represent the object’s data, while methods represent its behaviors or actions that can be performed. Each object of a class can have different attribute values, allowing individual instances to have their own state.
For example, consider a class named Person:
|
|
In the above code, Person is a class that has the attributes name and age, as well as the greet method. An object (instance) of this class can be created as follows:
|
|
Here, person1 and person2 are two distinct objects of the Person class. They have their own unique values for the name and age attributes. We can call the greet method on these objects:
|
|
Each object maintains its own state and can perform actions (methods) defined in the class. In Python, an object is an instance of a class that encapsulates its own set of attributes and behaviors. Objects allow us to create multiple instances with different states, enabling code reusability and modularity.
In the print statement f is mandatory. This is called F-strings. Check out Python Strings article for more information.
Introduction to Classes
A class is a user-defined data type that encapsulates data (attributes) and functions (methods) into a single entity. It represents a blueprint or a prototype for creating objects. Objects are instances of a class and can have their own unique states and behaviors.
A class in Python is a blueprint for creating objects. It defines the properties and behaviors that objects of that class will have. Think of a class as a template or a cookie cutter, and objects as the cookies that are created using that template. Each object created from a class is called an instance of that class.
Creating a Class
In Python, you can define a class using the class keyword followed by the class name. Here’s a simple example:
|
|
In the above code, we defined a class named Person with no attributes or methods. The pass statement is a placeholder that allows the class to be defined without any content.
Example:
To create a class in Python, you use the class keyword followed by the class name. Here’s an example of a simple class in Python:
|
|
In the example above, we define a Car class with attributes make, model, and year. The __init__ method is a special method called a constructor, which is used to initialize the object’s attributes. The display_info method is a simple method that prints out information about the car.
Adding Attributes
Attributes are variables that store data associated with a class or an object. They can be defined within the class using the self keyword. The self parameter refers to the instance of the class and is used to access its attributes and methods. Let’s add some attributes to the Person class:
|
|
In the above code, we defined an __init__ method. This special method is called a constructor and is executed automatically when an object of the class is created. The self parameter is required and refers to the instance of the class. It is used to assign values to the attributes name and age.
self Explained
self is a reference to the current instance of the class, and is used to access variables that belong to the class.
When a method is called, Python passes the instance object (usually named self) as the first argument. This allows methods to access and modify attributes of the class. Any variable assigned to self becomes an instance variable. It can only be accessed through a class instance, rather than through the class itself.
For example:
|
|
Here:
-
self refers to the instance p1 when say_hi() is called.
-
name is assigned to self, making it an instance variable that can only be accessed through p1 (e.g. p1.name)
-
self.name prints the name attribute of the current instance
-
Without self, there would be no way to access instance variables from methods. It provides a reference to the current object.
-
self is not a special keyword, but a reference like any other. It just happens to always refer to the current instance by convention.
So in summary, self represents the instance of the class, and allows methods to access and modify attributes of that specific instance.
__init__ Explained
The init() method in Python is a special method that is automatically called when an object is instantiated from a class. It is used to initialize the attributes of newly created objects of a class.
Some key things to know about the init() method:
-
init() is called automatically whenever a new instance of a class is created. It allows the class to initialize attributes of the newly created object.
-
It must have at least one argument, conventionally named self, that refers to the instance being created.
-
Any other arguments passed during object instantiation are also passed to init(). These arguments can then be used to set attributes of self.
-
init() is intended to perform any initialization tasks that are required for the object to work properly. This includes assigning values to attributes, opening files/connections etc.
Example:
|
|
Here:
- init() takes name and age as arguments and assigns them to attributes of self.
- When an instance p1 is created, name and age values are passed to init() and used to initialize p1.
So in summary:
- init() allows initializing attributes when a new instance is created.
- It is called automatically at object creation.
- Any arguments passed during instantiation are passed to init().
- It performs any setup work required for the object to function properly.
Attributes and Objects
Here are the key things to know about attributes and methods in Python class definitions:
Attributes:
- Attributes are variables that belong to a class and its objects.
- Attributes are defined inside the class but outside any methods with just a name and optional value.
- Attributes can be accessed via self inside methods or directly from an instance outside methods.
Methods:
- Methods are functions defined inside a class. They act on instances of the class.
- Methods take self as the first argument which refers to the current instance of the class.
- self allows methods to access and modify attributes of the current object.
Example class definition:
|
|
Breakdown:
- name and age are attributes
- set_name() and greet() are methods
- set_name() uses self to set the name attribute
- greet() uses self to access and print the name attribute
So in summary:
- Attributes store data belonging to each instance
- Methods contain reusable code acting on the instance
- self provides access to attributes from within methods
Creating Objects
To create an object of a class, you simply call the class as if it were a function, passing any required arguments. Here’s an example of creating two Person objects:
|
|
In the above code, we created two objects person1 and person2 of the Person class, passing the name and age values as arguments.
Accessing Attributes
Once objects are created, you can access their attributes using the dot notation. Here’s an example:
|
|
In the above code, we accessed the name attribute of person1 and the age attribute of person2.
Adding Methods
Methods are functions defined within a class. They can perform operations on the class’s attributes or modify the state of the object. Here’s an example of adding a method to the Person class:
|
|
In the above code, we added a method called greet to the Person class. This method prints a greeting message using the name and age attributes of the instance.
Calling Methods
To call a method on an object, you use the dot notation similar to accessing attributes. Here’s an example:
|
|
In the above code, we called the greet method on both person1 and person2.
Class Variables
Class variables are shared among all instances of a class. They are defined within the class but outside any method. Here’s an example:
|
|
In the above code, species is a class variable that is shared by all instances of the Person class. Changes to the class variable affect all instances.
Inheritance in Classes
One of the key features of object-oriented programming is inheritance. In Python, you can create a new class that inherits from an existing class. The new class is called a subclass, and the existing class is called a superclass. The subclass inherits all the attributes and methods of the superclass and can also define its own attributes and methods.
|
|
In the example above, we define a ElectricCar class that inherits from the Car class. The __init__ method of the ElectricCar class calls the __init__ method of the Car class using super(), and then initializes its own attribute battery_size. It also defines a new method display_battery_info to display information about the battery size.
Conclusion
Classes in Python provide a powerful mechanism for creating objects with their own attributes and behaviors. By understanding concepts like __init__, self, attributes, methods, and class variables, you can build modular and reusable code. Classes are fundamental to object-oriented programming and are widely used in various Python applications.
This article has provided a detailed overview of classes in Python, explaining each concept along with examples. Armed with this knowledge, you can start building your own classes and objects in Python, enabling you to write more organized and maintainable code.
Your inbox needs more DevOps articles.
Subscribe to get our latest content by email.
