string object input urllib object socket object dictionary object string object output beautifulsoup object html parser object figure program as network of objects program was "orchestrating the movement of data between objects it was just lines of code that got the job done subdividing problem one of the advantages of the object-oriented approach is that it can hide complexity for examplewhile we need to know how to use the urllib and beautifulsoup codewe do not need to know how those libraries work internally this allows us to focus on the part of the problem we need to solve and ignore the other parts of the program input string object urllib object socket object dictionary object string object output beautifulsoup object html parser object figure ignoring detail when using an object this ability to focus exclusively on the part of program that we care about and ignore the rest is also helpful to the developers of the objects that we use for examplethe programmers developing beautifulsoup do not need to know or care about how we retrieve our html pagewhat parts we want to reador what we plan to do with the data we extract from the web page our first python object at basic levelan object is simply some code plus data structures that are smaller than whole program defining function allows us to store bit of code and give it name and then later invoke that code using the name of the function