Basics of Object-Oriented Programming in Python
As stated earlier, OOP is a programming paradigm that uses objects and classes and aims to implement real-world entities in programming. The main concepts of OOP are stated below:
1. Inheritance: It is the process in which one class inherits the methods and attributes from another class. The class whose properties and methods are inherited is known as the Parent class and the class which inherits from the parent class is called the Child class. Inheritance is the most important aspect of object-oriented programming and provides the reusability of the code.
2. Encapsulation: The word, “encapsulate” means to enclose something and the principle of encapsulation works in the same way. In OOP, the data and functions which operate on that data are wrapped together into a single unit by encapsulation. By this method, we can hide private details of a class and can only expose the functionality that is needed for interfacing with it.
3. Polymorphism: Polymorphism is taken from the Greek words Poly and morph which means many and shape respectively. Hence in OOP, Polymorphism refers to the functions having the same names but having different functionalities. Polymorphism helps in making programming more intuitive and easier.
4. Data Abstraction: Abstraction is another functionality of OOP in which we hide the internal details or implementations of a function and show the functionalities only. In other words, the users know “what the function does” but they don’t know “how it does” because they only get to see the basic implementation of the function, whereas the inner working is hidden.
To know more about the 4 pillars of Object-oriented programming click here. In this blog, we will discuss the 8 Tips for Object-Oriented Programming in Python. So Let’s take a look.
1. Difference of Class and Instance Level Data
To under inheritance, learning to differentiate between class-level and instance-level data is very crucial, as inheritance is one of the core concepts of OOP. An instance attribute is a Python variable belonging to one object and is unique to it. It is accessible only in the scope of this object and is defined inside the constructor function of the class. Whereas, a class attribute is unique to a class rather than a particular object and is defined outside the constructor function. While writing a code, Instance-level data should be kept separate from class-level data and should not interfere with it.
2. Using Meaningful Names
One of the best practices to follow while writing Object-Oriented Programming is to use meaningful names keeping in mind that the naming convention must follow camel casing. There are rules which apply while naming attributes and functions as well. Hence, we should always name the design in such a way that one class, attribute, or function is responsible for one particular task only.
3. Knowing the Use of Static
Static means that the member is bound to a class level rather than to an instance level. A static method can not access or modify the state of the class. By using static, the method doesn’t need access to the class instance. Also, using static methods improves code readability and saves a lot of memory.
4. Deciding Between Internal and Private Modifiers
Access specifiers in Python play an important role in securing data from unauthorized access and from being exploited. All data members and member functions of a class are declared public by default whereas to declare an internal method or attribute, a leading underscore ‘_’ is used. On the other hand, to declare a private one a double leading underscore ‘__’ is used. This practice helps in determining the access control of a specific data member or a member function of a class and tells the users which parts of the code are not public and should not be relied on.
5. Docstrings in Python
Developers are used to writing comments in the code but comments do not always provide the most structured way of workflows. For this inconvenience, Python structured documentation or docstrings provide a convenient way of associating documentation with Python public modules, functions, classes, methods, etc. Unlike source code comments, the docstring describes what the function does and not how. Docstrings in python are declared using “’triple single quotes”’ or “”“triple double quotes”””.
6. pep8 Guidelines
Python Enterprise Proposal also called PEP are coding conventions for python packages. Besides writing a code with proper logic, many other important factors affect a code’s quality. PEP 8 is a document that was written in 2001 by Guido van Rossum, Barry Warsaw, and Nick Coghlan with its main aim to enhance the readability and consistency of code. One should keep in mind three important pep8 guidelines that are, to ensure that Each line of code is limited to 80 characters, all libraries should be imported at the beginning, and to eliminate redundant variables or intermediary variables present in the code.
7. Setting Access to Attributes
Attributes of a class are function objects that are used to implement access controls of the classes and define corresponding methods of its instances. To access and manipulate the attributes of a class, python has some in-built methods. Those are getattr(), hasattr(), setattr() and delattr(). The getattr() function helps in accessing the attribute of the object. The hasattr() function is used in checking if an attribute exists or not. setattr() is used to set an attribute. In case the attribute does not exist, then one would be created, whereas, delattr() is used to delete an attribute.
8. Using Abstract Classes
An abstract class provides a common interface for different implementations of a component. In object-oriented programming, developers need to reduce the amount of coding, and hence, abstract classes are used. An abstract class is used as it applies to a wide variety of objects and helps in the creation of a set of methods that must be created within any child classes built from that abstract class.