hiding details and creating the public interface the key purpose of modeling an object in object-oriented design is to determine what the public interface of that object will be the interface is the collection of attributes and methods that other objects can use to interact with that object they do not needand are often not allowedto access the internal workings of the object common real-world example is the television our interface to the television is the remote control each button on the remote control represents method that can be called on the television object when weas the calling objectaccess these methodswe do not know or care if the television is getting its signal from an antennaa cable connectionor satellite dish we don' care what electronic signals are being sent to adjust the volumeor whether the sound is destined to speakers or headphones if we open the television to access the internal workingsfor exampleto split the output signal to both external speakers and set of headphoneswe will void the warranty this process of hiding the implementationor functional detailsof an object is suitably called information hiding it is also sometimes referred to as encapsulationbut encapsulation is actually more all-encompassing term encapsulated data is not necessarily hidden encapsulation isliterallycreating capsule and so think of creating time capsule if you put bunch of information into time capsulelock and bury itit is both encapsulated and the information is hidden on the other handif the time capsule has not been buried and is unlocked or made of clear plasticthe items inside it are still encapsulatedbut there is no information hiding the distinction between encapsulation and information hiding is largely irrelevantespecially at the design level many practical references use these terms interchangeably as python programmerswe don' actually have or need true information hiding(we'll discuss the reasons for this in objects in pythonso the more encompassing definition for encapsulation is suitable the public interfacehoweveris very important it needs to be carefully designed as it is difficult to change it in the future changing the interface will break any client objects that are calling it we can change the internals all we likefor exampleto make it more efficientor to access data over the network as well as locallyand the client objects will still be able to talk to itunmodifiedusing the public interface on the other handif we change the interface by changing attribute names that are publicly accessedor by altering the order or types of arguments that method can acceptall client objects will also have to be modified while on the topic of public interfaceskeep it simple always design the interface of an object based on how easy it is to usenot how hard it is to code (this advice applies to user interfaces as well[