Till now , we have been dealing with very small codebases however as you start to deal with much larger Python scripts , it becomes difficult to organize the code by just using the functions. This is where a concept called object oriented programming is used. From here on we will just call it 'OOP'.
OOP allows programmers to create their own objects that has custom methods and attributes associated with them. This really keeps the codebase organized and very scalable.
In OOP , a class is used as an template to create an object and store the methods and atributes associated with it. Once these methods are created within a class , they can easily be called later on.
Let us look at all the components of a very basic class. Do not worry if it all looks a bit confusing for now.
Let us create a simple class where we use car as our object. What do you think should be attributes of this class?? well attributes are nothing but characteristics of the object. So in this case we consider the company of the car and the color of the car to be its attributes.
So our class looks something like this:
class Car(): def __init__ (self,param1,param2): self.company = param1 self.color = param2
class Car(): def __init__ (self,company,color): self.company = company self.color = color
Now that we have our class ready , Let us create an instance of the class where we pass in the values for attributes and then we can call our class to get the value for any attribute. An instance of the class looks something like this:
#creating an instance of the class my_car = Car('bmw','black')
Now let us combine the code and call our class to get values for attributes.
class Car(): def __init__ (self,company,color): self.company = company self.color = color #creating an instance of the class my_car = Car('bmw','black') #getting values of attributes print(my_car.company) print(my_car.color)
Say we have an object of elephant and we want our class to contain some very basic and very obvious attributes about elephants with pre-defined values associated with them. The class object attribute allows us do just that. The attribute must be defined before the __init__ method and is accesible by the instance of class like any other attribute. In the code given below , species is our class object attribute.
class elephant(): #class object attribute is placed above __init__ method species = 'mammal' def __init__(self): #some code pass my_elephant = elephant() print(my_elephant.species)