Object Oriented Programming in Python | Set 2 (Data Hiding and Object Printing)
Prerequisite: Object-Oriented Programming in Python | Set 1 (Class, Object and Members)
In Python, we use double underscore (Or __) before the attributes name and those attributes will not be directly visible outside.
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 a hidden variable outside the class using an object and it threw an exception.
We can access the value of a hidden attribute by a tricky syntax:
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 give 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.
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__.
Test a:1234 b:5678
- If no __repr__ method is defined then the default is used.
<__main__.Test instance at 0x7fa079da6710>
This article is contributed by Shwetanshu Rohatgi. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.
To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course