Posted by Marta on February 1, 2023 Viewed 2259 times
Hey there! In this article you will learn what is a class and an object in python programming. The two key concepts of object oriented programming. You will learn what is a class in python and why it is important if you are serious about learning programming. Also you will learn how to create a class in python.
Let’s start with the key concepts. What is a class in python programming? and what is an object? Everyone knows what object means. Any tangible thing that you can sense, feel and manipulate is an object. In software, formally speaking, a class is a collection of data and associated behaviours. This will make sense in a minute.
Here is a python class example: a person can be represented as a class. Then I will define what information is relevant to represent a person, for instance, the name and age. Name and age will be our data. Then I will define the behaviours for that class, also known as python classes methods. I will define two behaviours for this class: ‘say hello’ and ‘say name’ . Perfect! We just defined a class. In other words, we just defined a template with what the object will contain. When you assign values to that template ,then you are creating an object.
Let’s see an example. A person with name and age is the class. Then you can create one object and save it in a variable called ‘Person1′ with name=’Peter’ and age=16. Another Person object with name=’Mary’ and age=32. You could have another class Circle and its data will be the radius and colour, and its behaviour is calculating the area. Then I will have an object of the class circle with value radius=3 and colour=yellow and another object of the class Circle with radius=5 and colour=blue.
Let’s talk about object oriented programming. Object Oriented means that you solve a problem or a task representing the entities of your problem as classes.
For instance if your problem is calculating the area of a circle, you will need the radius and then you will do 2*PI*radius.
You could solve this problem with a non object oriented approach: creating a method that calculate the area passing the radius as a parameter. Or if you use the object oriented approach, you will define a class Circle with a field radius and a method that calculate the area.
What are the benefits of using object oriented approach? It helps reducing the complexity and increase maintainability. Classes help you organise your code, keeping together code that is related in some logical way.
How can you translate all this into python? In other words, how to create a python class, then objects based on a class and use those objects. To follow the previous example, I will create a class person with two fields, name and age and the class methods ‘say_hello’ and ‘say_name’.
class Person: def __init__(self, name, age): self.name = name self.age = age def say_hello(self): print('Hello') def say_name(self): print('My name is ' + self.name) person1 = Person('Peter', 28) person2 = person('Mary', 32) person1.say_hello() person2.say_name()
The __init__ method is the constructor. When you call this method, you are creating an object of the class Person. The main task of the constructor is populating your object with values. The results from the code above are the following:
Hello My name is Mary
We have seen how to create a class and how to use it, let’s talk out attributes
We seen attributes is the relevant data that we will like to save about our object, eg. for a person we might save name and age. These are instance attributes because they are initialised in the constructor, the __init__ method. This attributes can only be accessed through an object of the class, also known as instance. However there is another type of attribute, the global attributes. Global attributes can be accessed through the class, you don’t need to create an instance to use them. Let’s see an example
class Person: race = 'Human Being' # global attribute def __init__(self,name,age): self.name = name # instance attribute self.age = age # instance attribute def say_hello(self): print("Hello, my name is" + self.name) def say_age(self): print("I am " + self.age +" years old") # This will return the following error # AttributeError: type object 'Person' has no attribute 'name' print(Person.name) person_instance = Person('Mary',30) # This will work. name is an instance attribute, therefore I need # to create an instance of my class to use it print(person_instance.name) # This will work. Race is a global attribute so I can access it through # the class, I don't need an instance. print(Person.race) # Return Human Being # Global instance can be accessed via the class or via the instance. print(person_instance.race)
Global attributes can be accessed through the class or through the instance and instance attributes only through the instance.
Here is a little exercise so you can check your understanding. Try to solve it yourself before checking the solution! 🙂
Exercise: Create class Circle that has one global attribute with the value of PI and an instance attribute radius. And create an area method to calculate the area of the circle.
class Circle: PI =3.14 def __init__(self,radius): self.radius = radius def area(self): return self.PI * self.radius ** 2 circle_instance = Circle(10) print(circle_instance.area())
In conclusion, we covered what is a class and an object in programming. Remember class is the template, the object is created from the class and it holds the actual values. End of the article where I covered what python classes and objects are, what object oriented programming is and why is important. And we have seen how to use python classes and objects.
In case you would like to learn more about python, I highly recommend the following book. It will help you to get on professional Python development straight away, no additives, it is worth every single word.
Thank you so much for reading this article!! If you like the article and you would like to be notified when I publish more articles about how to become a software developer and how to improve your skills, feel free to subscribe.
Steady pace book with lots of worked examples. Starting with the basics, and moving to projects, data visualisation, and web applications
Unique lay-out and teaching programming style helping new concepts stick in your memory
Great guide for those who want to improve their skills when writing python code. Easy to understand. Many practical examples
Perfect Boook for anyone who has an alright knowledge of Java and wants to take it to the next level.
Excellent read for anyone who already know how to program and want to learn Best Practices
Perfect book for anyone transitioning into the mid/mid-senior developer level
Great book and probably the best way to practice for interview. Some really good information on how to perform an interview. Code Example in Java