Protected variable in Python

Prerequisites: Underscore ( _ ) in Python

A Variable is an identifier that we assign to a memory location which is used to hold values in a computer program. Variables are named locations of storage in the program. Based on access specification, variables can be public, protected and private in a class.

Protected variables are those data members of a class that can be accessed within the class and the classes derived from that class. In Python, there is no existence of “Public” instance variables. However, we use underscore ‘_’ symbol to determine the access control of a data member in a class. Any member prefixed with an underscore should be treated as a non-public part of the API or any Python code, whether it is a function, a method or a data member.



Example 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

# program to illustrate protected
# data members in a class 
  
  
# Defining a class
class Geek: 
      
    # protected data members 
    _name = "R2J"
    _roll = 1706256
      
    # public member function 
    def displayNameAndRoll(self): 
  
        # accessing protected data members 
        print("Name: ", self._name) 
        print("Roll: ", self._roll) 
  
  
# creating objects of the class         
obj = Geek() 
  
# calling public member 
# functions of the class 
obj.displayNameAndRoll() 

chevron_right


Output:

Name:  R2J
Roll:  1706256

Example 2: During Inheritance

filter_none

edit
close

play_arrow

link
brightness_4
code

# program to illustrate protected
# data members in a class 
  
  
# super class 
class Shape: 
      
    # constructor 
    def __init__(self, length, breadth): 
        self._length = length
        self._breadth = breadth 
          
    # public member function 
    def displaySides(self): 
  
        # accessing protected data members 
        print("Length: ", self._length) 
        print("Breadth: ", self._breadth) 
  
  
# derived class 
class Rectangle(Shape): 
  
    # constructor 
    def __init__(self, length, breadth): 
  
        # Calling the constructor of
        # Super class
        Shape.__init__(self, length, breadth) 
          
    # public member function 
    def calculateArea(self): 
                      
        # accessing protected data members of super class 
        print("Area: ", self._length * self._breadth) 
                      
  
# creating objects of the 
# derived class         
obj = Rectangle(80, 50
  
# calling derived member 
# functions of the class
obj.displaySides()
  
# calling public member
# functions of the class 
obj.calculateArea() 

chevron_right


Output:

Length:  80
Breadth:  50
Area:  4000

In the above example, the protected variables _length and _breadth of the super class Shape are accessed within the class by a member function displaySides() and can be accessed from class Rectangle which is derived from the Shape class. The member function calculateArea() of class Rectangle accesses the protected data members _length and _breadth of the super class Shape to calculate the area of the rectangle.



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.