In an object oriented python program, you can restrict access to methods and variables. This can prevent the data from being modified by accident and is known as encapsulation. Let’s start with an example.
Complete Python Bootcamp: Go from zero to hero in Python 3
We create a class Car which has two methods: drive() and updateSoftware(). When a car object is created, it will call the private methods __updateSoftware().
This function cannot be called on the object directly, only from within the class.
This program will output:
Encapsulation prevents from accessing accidentally, but not intentionally.
The private attributes and methods are not really hidden, they’re renamed adding _Car” in the beginning of their name.
The method can actually be called using redcar._Car__updateSoftware()
Variables can be private which can be useful on many occasions. A private variable can only be changed within a class method and not outside of the class.
Objects can hold crucial data for your application and you do not want that data to be changeable from anywhere in the code.
If you want to change the value of a private variable, a setter method is used. This is simply a method that sets the value of a private variable.
Why would you create them? Because some of the private values you may want to change after creation of the object while others may not need to be changed at all.
To summarize, in Python there are:
|public methods||Accessible from anywhere|
|private methods||Accessible only in their own class. starts with two underscores|
|public variables||Accessible from anywhere|
|private variables||Accesible only in their own class or by a method if defined. starts with two underscores|