python tutorial - Python Object Oriented Programming | Object Oriented Programming in Python | Data Hiding and Object Printing - learn python - python programming




Data hiding

In Python, we use double underscore (Or __) before the attributes name and those attributes will not be directly visible outside.

python - Sample - python code :

class MyClass:
 
    # Hidden member of MyClass
    __hiddenVariable = 0
   
    # A member method that changes 
    # __hiddenVariable 
    def add(self, increment):
        self.__hiddenVariable += increment
        print (self.__hiddenVariable)
  
# Driver code
myObject = MyClass()     
myObject.add(2)
myObject.add(5)
 
# This line causes error
print (myObject.__hiddenVariable)

python tutorial - Output :

2
7
Traceback (most recent call last):
  File "filename.py", line 13, in 
    print (myObject.__hiddenVariable)
AttributeError: MyClass instance has 
no attribute '__hiddenVariable' 

In the above program, we tried to access hidden variable outside the class using object and it threw an exception.

We can access the value of hidden attribute by a tricky syntax:

python - Sample - python code :

# A Python program to demonstrate that hidden
# members can be accessed outside a class
class MyClass:
 
    # Hidden member of MyClass
    __hiddenVariable = 10
 
# Driver code
myObject = MyClass()     
print(myObject._MyClass__hiddenVariable)

python tutorial - Output :

10

Private methods are accessible outside their class, just not easily accessible. Nothing in Python is truly private; internally, the names of private methods and attributes are mangled and unmangled on the fly to make them seem inaccessible by their given names [See this for source ].

 

Printing Objects

Printing objects gives us information about objects we are working with. In C++, we can do this by adding a friend ostream& operator << (ostream&, const Foobar&) method for the class. In Java, we use toString() method. In python this can be achieved by using __repr__ or __str__ methods.

python - Sample - python code :

class Test:
    def __init__(self, a, b):
        self.a = a
        self.b = b
 
    def __repr__(self):
        return "Test a:%s b:%s" % (self.a, self.b)
 
    def __str__(self):
        return "From str method of Test: a is %s," \
              "b is %s" % (self.a, self.b)
 
# Driver Code        
t = Test(1234, 5678)
print(t) # This calls __str__()
print([t]) # This calls __repr__()

python tutorial - Output :

From str method of Test: a is 1234,b is 5678
[Test a:1234 b:5678]

Important Points about Printing:

  • If no __str__ method is defined, print t (or print str(t)) uses __repr__.

python - Sample - python code :

class Test:
    def __init__(self, a, b):
        self.a = a
        self.b = b
 
    def __repr__(self):
        return "Test a:%s b:%s" % (self.a, self.b)
 
# Driver Code        
t = Test(1234, 5678)
print(t) 

python tutorial - Output :

Test a:1234 b:5678
  • If no __repr__ method is defined then the default is used.

python - Sample - python code :

class Test:
    def __init__(self, a, b):
        self.a = a
        self.b = b
 
# Driver Code        
t = Test(1234, 5678)
print(t) 

python tutorial - Output :

<__main__.Test instance at 0x7fa079da6710>

Wikitechy tutorial site provides you all the learn python , python cursus online , python programming course free , where to learn python programming , free online python course , online free python course , learn python coding online , python developers , python certification free , python learning course , online course python

Related Searches to Object Oriented Programming in Python | Data Hiding and Object Printing

Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

We don't have any banner, Flash, animation, obnoxious sound, or popup ad. We do not implement these annoying types of ads!

We need money to operate the site, and almost all of it comes from our online advertising.

Please add wikitechy.com to your ad blocking whitelist or disable your adblocking software.

×